皆さん、こんにちは!データと格闘する毎日、お疲れ様です!
「データがたくさんあって、欲しい情報を見つけるのが大変…」 「毎回手作業でデータを抽出したり、集計したりするのって面倒くさい…」
Googleスプレッドシートには、まるで魔法のようにデータを操れる超強力な関数があるんです。その名も「QUERY関数」!
今回は、このQUERY関数について、初心者さんでも安心して読めるように、とことん優しく解説していきます。
この記事では以下のことが学べます。
・QUERY関数とは
・各項目を自由自在に抽出
・QUERY関数を使いこなすためのヒント
- 1. QUERY関数って何?どんなことができるの?
- 2. QUERY関数の基本形をマスターしよう!
- 3. SELECT句:欲しい列だけを抜き出そう!
- 4. WHERE句:条件を指定してデータを絞り込もう!
- 5. GROUP BY句:データをグループ化して集計しよう!
- 6. ORDER BY句:データを好きな順番に並べ替えよう!
- 7. LIMIT句 & OFFSET句:表示する行数を調整しよう!
- 8. LABEL句:見出しを分かりやすく変更しよう!
- 9. FORMAT句:表示形式を整えよう!
- 10. 実践!QUERY関数を使いこなすためのヒント
- 11. QUERY関数でよくあるエラーと解決策
- 12. まとめ:QUERY関数を味方につけてデータ分析を楽しもう!
1. QUERY関数って何?どんなことができるの?
QUERY関数は、データベースを操作するような感覚でデータを取り扱えるすごい関数です。
SQL(Structured Query Language)というデータベース言語に似た書き方で、
大量のデータから必要な情報だけを抽出したり、集計したり、並べ替えたりすることができます。
QUERY関数でできることの例:
・「売上が1000円以上」の商品だけをリストアップする
・「2024年の売上データを月ごとに合計する」
・「商品Aの購入者だけを表示し、購入数が多い順に並べ替える」
・「特定のキーワードを含むコメントだけを抽出する」
これらを今まで手作業でやっていた方は、QUERY関数を知れば、劇的に作業時間が短縮されますよ!
2. QUERY関数の基本形をマスターしよう!
QUERY関数の書き方は、まるで英語の文章を組み立てるようにシンプルです。
基本形はこれ!
=QUERY(データ範囲, "クエリ", [見出しの行数])
- データ範囲:
QUERY関数で操作したいデータの範囲を指定します。
例えば、「A1:D100」のように指定します。 - “クエリ”:
どんなデータを取得したいのか、どんな条件で絞り込みたいのかなどを記述します。
ここがQUERY関数の肝となる部分です! - [見出しの行数](オプション):
データの先頭に何行分の見出しがあるかを指定します。
通常は「1」を指定することが多いですが、見出しがない場合は「0」とします。
これを指定することで、QUERY関数が見出し行を適切に処理してくれます。
たとえば以下のような元データを準備しました。

クエリを入力しなかったら、指定したデータ範囲が全て取得されます
=QUERY('元データ'!A:G)
※ちなみに、データ範囲は上の別シートから取得しているので、指定するデータ範囲は「’元データ’!A:G」となっています

ここで指定したデータ範囲からどんな条件でデータを取得したいかを指定するには
「クエリ」部分が重要になってきます!
次からQUERY関数の肝、クエリの具体的な例を見ながら学んでいきましょう!
3. SELECT句:欲しい列だけを抜き出そう!
まずはQUERY関数の最も基本的な部分、「SELECT句」から!
これは「どの列のデータが欲しいですか?」と指定する部分です。
書式: SELECT 列名1, 列名2, …
例: A列からG列にデータがあり、A列とB列とD列のデータだけを取り出したい場合
=QUERY(‘元データ’!A:G, "SELECT A, B, D")
‘元データ’!A:Gは、A列からG列までの全データを対象にするという意味です。
“SELECT A, B, D” は、「A列とB列とD列のデータだけちょうだい!」とお願いしているイメージです。


もし全列のデータが欲しい場合は、SELECT * と書きます。
例: 全列のデータが欲しい場合
=QUERY(‘元データ’!A:G, "SELECT *")

4. WHERE句:条件を指定してデータを絞り込もう!
SELECT句で列を指定できたら、次は「特定の条件を満たすデータだけ欲しい!」という場合に使う「WHERE句」です。
これは「〜という条件に合うデータだけを選んで!」と指示する部分です。
書式: WHERE 条件
例: 売上が1000以上の商品だけを表示したい場合
=QUERY(‘元データ’!A:G, "SELECT B, D WHERE D >= 1000")
- SELECT B, D は、B列とD列のデータを取得し
- WHERE D >= 1000 は、「D列(売上)が1000以上」という条件で絞り込んでいます。


よく使う比較演算子:
- = (等しい)
- != または <> (等しくない)
- > (より大きい)
- < (より小さい)
- >= (以上)
- <= (以下)
テキストの比較(必ずシングルクォーテーションで囲む):
=QUERY('元データ'!A:G,"SELECT B,D WHERE B = 'りんご'")
※A列が「りんご」と等しい

複数の条件を組み合わせるには AND や OR を使います。
- AND:両方の条件を満たす場合
- OR:どちらか一方の条件を満たす場合
例: 売上が1000以上で、かつ商品名が「りんご」の場合
=QUERY(A:B, "SELECT A, B WHERE B >= 1000 AND A = 'りんご'")
5. GROUP BY句:データをグループ化して集計しよう!
「商品ごとの合計売上が知りたい!」といった時に大活躍するのが「GROUP BY句」です。
これは「この列の値ごとにデータをまとめて、何かを計算して!」とお願いする時に使います。
書式: GROUP BY グループ化したい列名
GROUP BY句を使う際には、集計関数(SUM, AVG, COUNT, MAX, MINなど)と一緒に使うことがほとんどです。
よく使う集計関数:
- SUM(列名):合計
- AVG(列名):平均
- COUNT(列名):個数(データの件数)
- MAX(列名):最大値
- MIN(列名):最小値
例: A列に「商品名」、B列に「売上」があり、商品ごとの合計売上を知りたい場合
=QUERY('元データ'!A:G,"SELECT B,SUM(D) GROUP BY B")
SELECT B,SUM(D) は、B列(商品名)とD列(売上)の合計値を表示するように指定
GROUP BY B は、B列(商品名)ごとにグループ化しています。
これで、「りんごの合計売上は〇〇円、バナナの合計売上は△△円…」といった形で、
商品ごとの合計売上が一目でわかるようになります!


6. ORDER BY句:データを好きな順番に並べ替えよう!
集計したデータや抽出したデータを、売上順や日付順に並べ替えたい!
そんな時に使うのが「ORDER BY句」です。
書式: ORDER BY 並べ替えたい列名 [ASC | DESC]
- ASC:昇順(小さい方から大きい方へ、AからZへ)※省略するとデフォルトで昇順になります
- DESC:降順(大きい方から小さい方へ、ZからAへ)
例: 商品ごとの合計売上を、売上が高い順(降順)に並べ替えたい場合
=QUERY('元データ'!A:G,"SELECT B,SUM(D) GROUP BY B ORDER BY SUM(D) DESC")
ORDER BY SUM(D) DESCは、SUM(D)で計算された合計売上を降順に並べ替えています。


7. LIMIT句 & OFFSET句:表示する行数を調整しよう!
「上位10件だけ表示したい」「最初の5行は飛ばして表示したい」といった場合に使うのが「LIMIT句」と「OFFSET句」です。
- LIMIT句: 表示する行数の上限を指定します。
- OFFSET句: 先頭から指定した行数だけスキップして表示します。
書式: LIMIT 表示したい行数 OFFSET スキップしたい行数
例: 商品ごとの合計売上を、売上が高い順に並べ替え、上位3件だけを表示したい場合
=QUERY('元データ'!A:G,"SELECT B,SUM(D) GROUP BY B ORDER BY SUM(D) DESC LIMIT 3")

例: 上位3件をスキップして、その次の2件を表示したい場合(つまり4位と5位を表示)
=QUERY('元データ'!A:G,"SELECT B,SUM(D) GROUP BY B ORDER BY SUM(D) DESC LIMIT 2 OFFSET 3")

8. LABEL句:見出しを分かりやすく変更しよう!
QUERY関数で抽出したデータは、元の列名が見出しとして表示されますが、「sum」のように関数名が表示されてしまうこともあります。
そんな時に、見出しを分かりやすく変更できるのが「LABEL句」です。
書式: LABEL 列名 ‘新しい見出し’
例: 商品ごとの合計売上の見出しを「合計売上」に変更したい場合
=QUERY('元データ'!A:G,"SELECT B,SUM(D) GROUP BY B ORDER BY SUM(D) LABEL SUM(D)'合計売上'")
これで見出しが「合計売上」と表示され、よりレポートが見やすくなりますね!


9. FORMAT句:表示形式を整えよう!
日付や数値の表示形式を整えたい!そんな時に便利なのが「FORMAT句」です。
書式: FORMAT 列名 ‘表示形式’
表示形式は、Googleスプレッドシートの「表示形式」メニューで設定できるものと同じように指定できます。
例: 日付の列Cを「YYYY/MM/DD」形式に、数値の列Dを小数点以下2桁表示にしたい場合
=QUERY('元データ'!A:G,"SELECT A,B,C,D FORMAT A 'yyyyy_dd_mm',D '0.00'")


10. 実践!QUERY関数を使いこなすためのヒント
- まずはシンプルに書いてみる:
いきなり複雑なクエリを書くのではなく、SELECT句から始めて、徐々にWHERE句、GROUP BY句と追加していくのがおすすめです。 - エラーメッセージをよく読む:
エラーが出た場合は、そのメッセージをヒントに、どこが間違っているのかを確認しましょう。 - シングルクォーテーションを忘れずに:
テキストや日付を条件にする場合は、必ずシングルクォーテーション(’)で囲んでください。 - 列の参照はアルファベットで:
QUERY関数の中では、列をA, B, C…といったアルファベットで指定します。 - 見出し行の数を正しく指定する:
=QUERY(A:D, “SELECT …”, 1) のように、見出しの行数を正しく指定することで、データが正しく処理されます。
11. QUERY関数でよくあるエラーと解決策
「クエリの解析エラー」
最も多いエラーです。クエリの記述に誤りがあります。
解決策: スペルミスがないか、句読点(カンマなど)が正しいか、シングルクォーテーションの閉じ忘れがないかなどを確認しましょう。
「列 ‘XXX’ を見つけられませんでした」
指定した列名がデータ範囲に存在しないか、間違っている可能性があります。
解決策: データ範囲と列名の指定が合っているか確認しましょう。
「無効な集計式」
GROUP BY句と集計関数を正しく組み合わせていない場合に発生します。
解決策: SELECT句で集計関数を使っている場合、集計関数を使っていない他の列はGROUP BY句で必ず指定する必要があります。
12. まとめ:QUERY関数を味方につけてデータ分析を楽しもう!
GoogleスプレッドシートのQUERY関数、いかがでしたでしょうか?
難しく感じるかもしれませんが、使い方を覚えてしまえば、データ分析の効率を爆発的に高めてくれること間違いなしです!
手作業でやっていた煩雑なデータ抽出や集計も、QUERY関数を使えばあっという間。
時間を節約できるだけでなく、ミスのリスクも減らせます。
ぜひ、この記事を参考に、あなたのデータでQUERY関数を色々試してみてください。
データ分析がもっと楽しく、もっと効率的になりますよ!
当サイトではGoogleスプレッドシート、Excel、AIと表計算の組み合わせ等の便利な情報を発信しています!
当サイトをブックマークしていつでも遊んできてくださいね
それじゃまた他の記事でお会いしましょう
コメント