![見出し画像](https://assets.st-note.com/production/uploads/images/88265133/rectangle_large_type_2_3d11d08343da8c92dc45a7b4309ee0bc.jpeg?width=1200)
Googleフォームの回答データをQUERY関数で上手に活用しよう(2)
前回の記事はこちらです。
4.実用的な3つのサンプルをご紹介
Google Forms の回答に溜まったSpreadsheetのデータをもとに、希望のビューを設定しリアルタイムで参照出来るので多用しています。
実用的な使い方を3つご紹介したいと思います。
(1)フォーム回答を新しい回答から古いものへと逆順に表示する
数日から数週間に渡りフォームで回答を募集する場合、新しい回答がどうなっているか繰返し確認したくなります。
回答シートの隣に新しい回答参照用シート《最新順》を作り、前項で説明したQUERY関数をセル A1 に入力します。
=QUERY('フォームの回答 1'!A1:H,"SELECT * WHERE A IS NOT NULL ORDER BY A DESC ",1)
すると A1から始まるセルに表が現れ、タイムスタンプ降順(新しいものから古いものへと)に並んでいます。
![](https://assets.st-note.com/img/1663548270965-BDxugs6jBX.png?width=1200)
フォームに入力が有れば1~2秒遅れくらいで追加データが表示されます。
(2)抽出条件を指定するプルダウンリストを設定する
次は蓄積したデータから特定条件のものだけを抽出して表示してみましょう。
新しいシート 質問1 を追加します。
先ほどのシート 最新順 のセル A1 をコピーしてから シート 質問1 セルA2 にQUERY関数を貼り付けます。
先ほどと違い2行目に表見出し。3行目からデータが表示されていると思います。
この表は一旦置いといて、G列の「質問1の答え」をプルダウンで選択できるようにしてみます。
プルダウンを設定するG1セルを選択してから《データ → データの入力規制》をクリックします。
![](https://assets.st-note.com/img/1664681560295-gaXAZGzLY7.jpg?width=1200)
データの入力規制 項目の設定 には次のように設定していきます。
① セル範囲:プルダウンを設定するセル G1 を指定します。
② 条件:リストを範囲で指定します。
③ 右側の項目にはフォームの回答が蓄積されるシートのG列全体を指定します。(入力部分をクリックしてからマウスで指定できます)
④ セルにプルダウンリストを表示 にチェックを入れます。
⑤ 最後に 保存 をクリックし設定を終了して戻ります。
![](https://assets.st-note.com/img/1664681864514-RDuOb31SW8.jpg?width=1200)
データ入力規制の設定がうまくいけば G1 セルの右側に▼が表示されていると思います。
この選択肢は フォームの回答 1 のG列データ全体から、選択肢を自動抽出してくれるので大変便利です。
![](https://assets.st-note.com/img/1664682853151-B5NFNR9U9u.jpg)
▼をクリックすると選択可能なリストが現われ一つ選択できます。
![](https://assets.st-note.com/img/1664682769511-Z0apbov04E.jpg)
(3)WHERE句に選択条件を組み込む
先ほど貼り付けた '質問1' セルA2には次のようなQUERY関数が入っていると思います。
=QUERY('フォームの回答 1'!A1:H,"SELECT * WHERE A IS NOT NULL ORDER BY A DESC ",1)
先ず、関数のWHERE句に質問1回答の一つを抽出条件に設定してどのように表示されるのか見てみましょう。
'フォームの回答 1' データ部から、G列(質問1の回答)に '楽しみ' と回答したデータだけを表示してみます。
=QUERY( 'フォームの回答 1'!A1:H, "SELECT * WHERE G = '楽しみ' ORDER BY G ASC ,H ASC " ,1)
先ほどの WHERE A IS NOT NULL はタイムスタンプが空白でないもの全て。という意味でしたね。
今回は、G = '楽しみ' 即ち G列が '楽しみ' と回答されたデータだけを選択条件にしましたので、A列; タイムスタンプ の有無の絞り込み条件は省略しました。
並び替えの条件 ORDER BY はG列;回答1 昇順、H列;回答2 昇順 としました。
![](https://assets.st-note.com/img/1664782299357-P1BU7nPtGB.jpg?width=1200)
G1 をプルダウンから選択した '楽しい' とは一致していません
(4)検索指定のセル値をWHERE句に取り込む
それではいよいよ、この表の WHERE句 の選択条件をG1セルの値を参照するように書き換えてみましょう。
=QUERY( 'フォームの回答 1'!A1:H, "SELECT * WHERE G = '"&G1&"' ORDER BY G ASC ,H ASC " ,1)
こうすることで、セルG1の値とQUERY関数で生成される表がシンクロするようになりました。
![](https://assets.st-note.com/img/1664782710983-0gjTtKJ4nN.png?width=1200)
![](https://assets.st-note.com/img/1664783069297-RW8yleISFj.jpg?width=1200)
![](https://assets.st-note.com/img/1664783078007-rpyI3kZlYc.jpg?width=1200)
(5)検索の複合条件を設定してみる
今度は G列 ;質問1の答え と H列;質問2の答え 2つの条件に一致するデータを検索してみます。
シート 質問1+2 を作ってセルA2 にQUERY関数を入れていきます。
WHERE句 には2つの条件を AND でつないでいます。
![](https://assets.st-note.com/img/1664965080932-CDPCYaRmOw.jpg)
セル引用部分の記述がややこしいですが条件の表現部分を一つひとつのブロックに分けて眺めていけば理解しやすいかと思います。
クォーテーションとダブルクォーテーションの間にスペースを入れてしまうと意図通りの検索が出来なくなりますので注意しましょう。
=QUERY('フォームの回答 1'!A1:H, "SELECT A,B,C,D,E,F,G,H WHERE G = '"&G1&"' AND H = '"&H1&"' ORDER BY D ASC, E ASC, F ASC, B DESC")
セル G1;回答1 と H1;回答2にはプルダウンリストを設定をしました。
回答1、回答2 の選択肢をプルダウンからそれぞれ選択した結果を示します。
①「楽しい」+「B」
![](https://assets.st-note.com/img/1664801706494-bZ5OqE5hwE.jpg?width=1200)
②「楽しい」+「C」
![](https://assets.st-note.com/img/1664801568023-5oKhc40zPT.jpg?width=1200)
質問1='楽しい' AND 質問2='C' の結果
③「楽しみ」+「B」
![](https://assets.st-note.com/img/1664801654225-ltYwrcvAR4.jpg?width=1200)
④「楽しみ」+「C」
![](https://assets.st-note.com/img/1664801657291-CLnvB0QPyY.jpg?width=1200)
目的通り指定した項目でプルダウンから1つづつ選ぶだけで抽出条件を設定し、結果を表示することができました。
いかがですか、便利ですね!
次回は私たちが Key4 と呼んでいる 4桁の 学年+組+出席番号 の活用について紹介してみたいと思います。
続きはこちらです。