Googleスプレッドシート備忘録3(query関数等)

スプレッドシート素人です。
マイクロソフトとグーグル
エクセルとスプレッドシートの違いに翻弄されています。

はまったことの備忘録です。

 

/////////////////////////////////////////////////////
<今回からのテーマ>(フォーム→スプレッドシート→サイトの連携)
他人の作ったgoogleフォームとその回答(スプレッドシート)を見せてもらった。
(どんなフォームかは省略しますが、タイムスタンプと職員番号とアンケート内容が主)

フォームの回答1シート以外に、シートを作成して、query関数で区分。
さらにその結果をグラフ(表)としてgoogleサイトに連携しているようだ。

それらを自分なりに見ていく、再現しようと思う。

 

///////////////////////////////////////////////////
その前に別の知識
スプレッドシートを「マイドライブ」に直置きしていたが、左上の新規で「フォルダー」を作れば、その中に置けることを知る。
(フォルダーに移行してもフォームとスプレッドシートの連携は保たれるようだ。)

///////////////////////////////////////////////////

 

やろうとしたこと
query関数
フォームの回答1シートを参照するシートがあった。
query関数を使用している。基本的な使い方は省略。


実際の使い方は、こんな感じ

=query('フォームの回答 1'!A:H,"where A >= date '"&TEXT(TODAY(),"YYYY-MM-DD")&"' and B>100 and B<200 order by B asc",1)

 

A列のタイムスタンプを使って、今日以降のデータを抽出
さらに職員番号の101番から201番を抽出
それらを昇順で並べる
このシートの表題は1行目
(selectを使っていないので、AからHの前列を別シートに抽出・転記している。)

 

よく分かっていないが、スプレッドシートのquery関数は、
エクセルのspil関数(通常のエクセル2019でも使えない関数)みたいに、1つのセルに入力するだけで
それ以下の行・列を制御してくれるようだ。

 

で、上記数式を自分なりにやってみる。
よく見ると'や"や&がたくさん並んでいる。かなりはまったが、答えだけ。

 

練習1
=query('フォームの回答 1'!A:F,"where A >= date '2022-07-15' order by B asc",1)
(数式に、抽出したい日付を直接記入)

 

練習2
=query('フォームの回答 1'!A:F,"where A >= date '"&text(I3,"YYYY-MM-DD")&"'   order by B asc",1)
(日付をI3セルに入力し、そのセルを参照)
I3セルは2022/7/15のように入力。特にセルの書式を日付(2022/07/15)にしなくても問題なかった。
ただ、
=query('フォームの回答 1'!A:F,"where A >= date I3   order by B asc",1)
ではダメだった。理由は不明。今はあきらめた。

 

練習3
=query('フォームの回答 1'!A:F,"where A >= date '"&text(I3,"YYYY-MM-DD")&"' and B>100 and B<200 order by B asc",1)
これで指定した職員番号も抽出。
ただ、andの前に全角?スペースがあったたからか、なかなかうまくできなかった。


結局、query関数の'"&の使い方などは分かっていない。
エラーメッセージなど:テキストでない場合、テキストの前に'(アポストロフィ)を付けるようなメッセージ出た。(書いてて意味不明だな。)

 

理屈としては、where句で"を使い

dateの日付指定に'を使っているのだろう

'の次の"が、&・・・&を囲んでいる

 

追記:下記のHPに記載ありました。感謝いたします。

いつも隣にITのお仕事
【QUERY関数】where句で日付データを条件にして行を抽出する