「フィルターと集計とソートを一度にやりたい」「SUMIF・FILTER・SORTを3つ使い分けるのが面倒」そんなときに活躍するのがQUERY関数です。Googleスプレッドシート独自のこの関数は、SQLに似たクエリ言語で、データの絞り込み・並び替え・集計・整形をたった1つの関数でこなせます。この記事ではSELECTからFORMATまで全9句を、実例を交えながら初心者にわかりやすく解説します。

QUERY関数とは?

QUERY関数はGoogleスプレッドシート独自の強力な関数です。Googleが提供する「クエリ言語(Google Visualization API Query Language)」という命令文を使って、表データに対してさまざまな操作を一度に行えます。

  • FILTER関数の代わりに:条件でデータを絞り込む
  • SORT関数の代わりに:データを並び替える
  • SUMIF・COUNTIF・AVERAGEIFの代わりに:条件付き集計
  • さらに:行と列の入れ替え(PIVOT)、見出し変更、書式変換も可能

QUERY関数の書き方(構文)

=QUERY(データ, クエリ文字列, [見出し行数])
引数 説明 省略
データ 対象のセル範囲(例: A1:E100) 必須
クエリ文字列 クエリ言語による命令文(例: “SELECT A, B WHERE C>100″) 必須
見出し行数 先頭の見出し行の数(省略すると自動判定。通常は1を指定) 省略可

句の正しい順序

QUERY関数で使える句は全部で9種類あり、必ずこの順序で書く必要があります(使わない句は省略可)。

SELECT → WHERE → GROUP BY → PIVOT → ORDER BY → LIMIT → OFFSET → LABEL → FORMAT

SELECT:表示する列を選ぶ

どの列を表示するかを指定します。列はA・B・C…のアルファベットで指定します(セル番地ではなく列記号)。

=QUERY(A1:E100, "SELECT A, B, C", 1)

全列を表示する場合は SELECT * と書きます。

=QUERY(A1:E100, "SELECT *", 1)

WHERE:条件でデータを絞り込む

特定の条件に一致する行だけを抽出します。

数値条件

=QUERY(A1:D100, "SELECT A, B WHERE C > 100", 1)

文字列条件(シングルクォートで囲む)

=QUERY(A1:D100, "SELECT A, B WHERE B = '東京'", 1)

WHEREで使える演算子・条件一覧

条件 書き方 使用例
等しい = WHERE B = ‘東京’
等しくない != WHERE B != ‘大阪’
より大きい > WHERE C > 100
以上 >= WHERE C >= 100
含む contains WHERE B contains ‘東京’
で始まる starts with WHERE B starts with ‘山’
で終わる ends with WHERE B ends with ‘市’
正規表現 matches WHERE B matches ‘東京.*’
かつ and WHERE C > 100 and B = ‘東京’
または or WHERE B = ‘東京’ or B = ‘大阪’
空白 is null WHERE B is null
空白以外 is not null WHERE B is not null

セルの値を条件にする(セル参照)

=QUERY(A1:D100, "SELECT A, B WHERE B = '" & F1 & "'", 1)

ダブルクォートとシングルクォートを組み合わせ、&でセル参照を挟みます。F1の値が「東京」なら WHERE B = '東京' と同じ動作になります。

ORDER BY:並び替える

=QUERY(A1:D100, "SELECT A, B, C ORDER BY C DESC", 1)
オプション 意味
ASC 昇順(小→大)省略した場合の既定値
DESC 降順(大→小)

複数列で並び替えるときはカンマで区切ります:

=QUERY(A1:D100, "SELECT A, B, C ORDER BY B ASC, C DESC", 1)

GROUP BY:グループ別に集計する

GROUP BY句と集計関数を組み合わせて、グループ別の合計・件数・平均などを求めます。

集計関数 内容 使用例
SUM() 合計 SELECT A, SUM(C) GROUP BY A
COUNT() 件数 SELECT A, COUNT(B) GROUP BY A
AVG() 平均 SELECT A, AVG(C) GROUP BY A
MAX() 最大値 SELECT A, MAX(C) GROUP BY A
MIN() 最小値 SELECT A, MIN(C) GROUP BY A

例:A列(部署)ごとにC列(売上)を合計する:

=QUERY(A1:D100, "SELECT A, SUM(C) GROUP BY A ORDER BY SUM(C) DESC", 1)

PIVOT:行データを列に変換する

PIVOT句を使うと、縦に並んだデータを横(列)方向に展開できます。クロス集計表の作成に便利です。

=QUERY(A1:C100, "SELECT A, SUM(C) GROUP BY A PIVOT B", 1)

例:A列が「担当者」、B列が「商品カテゴリ」、C列が「売上」のデータがある場合、担当者×カテゴリ別の売上マトリクスを1つの関数で作れます。

LIMIT・OFFSET:表示行数を制御する

LIMIT:上位N行だけ表示する

=QUERY(A1:C100, "SELECT A, B, C ORDER BY C DESC LIMIT 10", 1)

売上上位10件だけを表示するときなどに使います。

OFFSET:先頭N行をスキップする

=QUERY(A1:C100, "SELECT A, B, C LIMIT 10 OFFSET 5", 1)

先頭5行をスキップして次の10行を取得します。ページング処理や「2ページ目のデータ」を取り出すときに便利です。

LABEL:見出しの名前を変更する

集計関数を使うと自動生成される見出し(例: sum C)を、わかりやすい名前に変えられます。

=QUERY(A1:D100, "SELECT A, SUM(C) GROUP BY A LABEL A '部署名', SUM(C) '売上合計'", 1)

ラベルを空文字 '' にすると見出し行を非表示にできます。

FORMAT:日付・数値の書式を変える

DATE型・数値の表示形式を変換します。日付を「YYYY年MM月」形式で表示したいときなどに使います。

=QUERY(A1:C100, "SELECT A, B FORMAT B 'YYYY年MM月DD日'", 1)
=QUERY(A1:D100, "SELECT A, SUM(C) GROUP BY A FORMAT SUM(C) '#,##0円'", 1)

実践応用:複数の句を組み合わせる

実務では複数の句を組み合わせて使います。句は必ず正しい順序(SELECT→WHERE→GROUP BY→ORDER BY→LIMIT→LABEL)で記述してください。

=QUERY(A1:D100,
  "SELECT A, SUM(C)
   WHERE D = '東日本'
   GROUP BY A
   ORDER BY SUM(C) DESC
   LIMIT 5
   LABEL A '部署', SUM(C) '売上合計'",
1)

「東日本エリアの部署別売上合計・上位5部署を降順で表示し、見出しも日本語に変換」という処理を1つの関数で実現しています。

よくあるエラーと対処法

エラー・症状 原因 対処法
#VALUE! クエリ文字列の構文が間違っている 句の順序・引用符・スペルを確認する
#N/A 一致するデータが1件もない WHERE条件を見直す
結果が空白 列記号(A・B)ではなく列番号(1・2)を使っている A・B・C形式のアルファベットで指定する
文字列条件が効かない 値をシングルクォートで囲んでいない WHERE B = ‘東京’ のようにシングルクォートで囲む
セル参照が効かない &での文字列結合ができていない “…WHERE B = ‘” & F1 & “‘” の形式で記述する
見出しが「sum C」になる 集計関数使用時の自動見出し LABEL句で任意の名前に変更する

まとめ

QUERY関数の9つの句をまとめます。

句 役割
SELECT 表示する列を選ぶ
WHERE 条件に一致する行だけ絞り込む
GROUP BY グループ別に集計する(SUM・COUNT・AVG・MAX・MIN)
PIVOT 縦データを横(列)方向に展開してクロス集計表を作る
ORDER BY 昇順(ASC)または降順(DESC)で並び替える
LIMIT 表示する行数を制限する(上位N件)
OFFSET 先頭N行をスキップして表示する
LABEL 列の見出しを任意の名前に変更する
FORMAT 日付・数値の表示形式を変換する

最初はSELECT・WHERE・ORDER BYの3つだけ使い始め、慣れたらGROUP BY・LABEL・FORMATと少しずつ機能を追加していくのがおすすめです。FILTER・SORT・SUMIF関数を複数使っていた処理が、QUERY関数1つにまとめられるケースも多いので、ぜひ活用してみてください。

ABOUT ME
IT解決チャンネル編集部
ExcelやWord、Windows、Googleスプレッドシートなど、ビジネスで使うITツールの使い方を初心者にもわかりやすく解説しています。関数の使い方から実務で役立つ応用テクニックまで、画像付きでていねいに紹介。パソコン操作で困ったときの頼れる情報源を目指しています。