「フィルターと集計とソートを一度にやりたい」「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ツールの使い方を初心者にもわかりやすく解説しています。関数の使い方から実務で役立つ応用テクニックまで、画像付きでていねいに紹介。パソコン操作で困ったときの頼れる情報源を目指しています。