【超便利!】GoogleスプレッドシートのQUERY関数を使いこなしてデータ分析を爆速化しよう!

QUERY関数で分析、集計 スプレッドシート

皆さん、こんにちは!データと格闘する毎日、お疲れ様です!

「データがたくさんあって、欲しい情報を見つけるのが大変…」 「毎回手作業でデータを抽出したり、集計したりするのって面倒くさい…」

Googleスプレッドシートには、まるで魔法のようにデータを操れる超強力な関数があるんです。その名も「QUERY関数」

今回は、このQUERY関数について、初心者さんでも安心して読めるように、とことん優しく解説していきます。

この記事では以下のことが学べます。

・QUERY関数とは
・各項目を自由自在に抽出
・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 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以上」という条件で絞り込んでいます。
元データ
1000以上を出力

よく使う比較演算子:

  • = (等しい)
  • != または <> (等しくない)
  • > (より大きい)
  • < (より小さい)
  • >= (以上)
  • <= (以下)

テキストの比較(必ずシングルクォーテーションで囲む):

=QUERY('元データ'!A:G,"SELECT B,D WHERE B = 'りんご'")

※A列が「りんご」と等しい

りんごを出力

複数の条件を組み合わせるには ANDOR を使います。

  • 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位を表示

例: 上位3件をスキップして、その次の2件を表示したい場合(つまり4位と5位を表示)

=QUERY('元データ'!A:G,"SELECT B,SUM(D) GROUP BY B ORDER BY SUM(D) DESC LIMIT 2 OFFSET 3")
合計金額が4位と5位を表示

8. LABEL句:見出しを分かりやすく変更しよう!

QUERY関数で抽出したデータは、元の列名が見出しとして表示されますが、「sum」のように関数名が表示されてしまうこともあります。
そんな時に、見出しを分かりやすく変更できるのが「LABEL句」です。

書式: LABEL 列名 ‘新しい見出し’

例: 商品ごとの合計売上の見出しを「合計売上」に変更したい場合

=QUERY('元データ'!A:G,"SELECT B,SUM(D) GROUP BY B ORDER BY SUM(D) LABEL SUM(D)'合計売上'")

これで見出しが「合計売上」と表示され、よりレポートが見やすくなりますね!

見出しにsumと追加されてしまう
labelで見出しを任意の文字列に変更できる

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'")
元データの書式を変えたい
formatで自由自在に書式を変更できる

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と表計算の組み合わせ等の便利な情報を発信しています!
当サイトをブックマークしていつでも遊んできてくださいね

それじゃまた他の記事でお会いしましょう

コメント

タイトルとURLをコピーしました