Google SheetsのQUERY関数をAIに作ってもらうときは、いきなり「この表を集計して」と頼むより、対象range、列の意味、欲しい結果、header行数を先に固定すると失敗を減らせます。特に大事なのは、AIが出した式をそのまま採用するのではなく、少数の既知データで「抽出件数・合計値・並び順」が期待どおりか確認することです。
QUERYは、1本の式の中で列の選択、条件抽出、集計、並べ替えまで書けるのが強みです。一方、単純な抽出だけならFILTER、条件付き合計だけならSUMIFSの方が読みやすい場合もあります。この記事では、QUERYを使うべき場面を見極めたうえで、日本語の要件を実際に動く式へ変換し、エラー時にどこを直せばよいかまで進めます。
目次
まず完成形を見る:売上表から「東京の商品A」だけを抜き出す
例として、A〜E列に次のデータがあるとします。1行目はheaderです。
表は横にスクロールできます
| A:日付 | B:商品 | C:地域 | D:数量 | E:売上 |
|---|---|---|---|---|
| 2026/10/01 | 商品A | 東京 | 2 | 6000 |
| 2026/10/01 | 商品B | 大阪 | 1 | 4200 |
| 2026/10/02 | 商品A | 東京 | 3 | 9000 |
| 2026/10/02 | 商品A | 大阪 | 1 | 3000 |
この表から「商品Aかつ東京」の日付・商品・売上だけを表示し、日付順に並べるなら、考え方は次の4つに分かれます。表示列はA・B・E、条件はBが商品AかつCが東京、並び順はAの昇順、headerは1行です。
式の例:
=QUERY(A1:E100,"select A, B, E where B = '商品A' and C = '東京' order by A",1)
この式をAIから受け取ったら、まず4行程度のsampleで照合します。上の例なら、該当するのは1行目と3行目のデータです。期待する行だけが出るか、売上列がE列になっているか、headerがデータとして混ざっていないかを見ます。大きなsheetへ適用するのは、その後で十分です。
QUERYを作る前に、AIへ渡す情報を5つに分ける
AIへ伝える情報は「元データ」と「やりたいこと」を一文に詰め込まず、次の5項目に分けます。これだけで、列を取り違えた式や、意図していない集計がかなり見つけやすくなります。
表は横にスクロールできます
| 項目 | AIへ渡す内容 | 例 |
|---|---|---|
| Data range | QUERYの対象 | A1:E100 |
| Column map | 列記号と意味 | A=日付、B=商品、C=地域、D=数量、E=売上 |
| Desired output | 最終的に見たい列・集計 | 商品別の売上合計 |
| Conditions | 絞り込み条件 | 地域=東京、売上>0 |
| Headers | header行数 | 1 |
ここで重要なのは、AIへ実データの意味を渡すことです。「B列をgroup byしてE列をsum」だけでも式は作れますが、Bが商品、Eが売上だと分かっていれば、出力が目的に合っているか説明させやすくなります。
そのまま使えるAIへの依頼文
次のように依頼すると、式だけでなく検証材料も一緒に受け取れます。
Google SheetsのQUERY関数を作ってください。
対象range:A1:E100
header:1行
列の意味:
A=日付
B=商品名
C=地域
D=数量
E=売上
やりたいこと:
・商品Aだけに絞る
・東京の行だけに絞る
・表示する列は日付、商品名、売上
・日付の昇順にする
出力してほしいもの:
-
完成したQUERY式
-
select / where / order by がそれぞれ何をしているか
-
この式が前提にしているdata typeとheader行数
-
3〜5行のsampleで確認すべき期待結果
-
結果が空になる場合の確認ポイント
存在しない列や条件を推測で追加しないでください。
AIの役割は、自然文をQUERYの構文へ変換するところです。どの列が正しいか、値の表記がどうなっているか、期待結果が何件かは元sheet側で確認します。ここを分けると、「式はそれらしいが結果が違う」という事故を見つけやすくなります。
よく使うClauseを「役割」で覚える
QUERYは英語風の記述になるため、構文を丸暗記するより、何を決めるClauseなのかで分ける方が扱いやすいです。
表は横にスクロールできます
| やりたいこと | Clause | 例 |
|---|---|---|
| 表示する列を選ぶ | select | select A, B, E |
| 条件で絞る | where | where C = '東京' |
| 集計単位を決める | group by | group by B |
| 並び順を決める | order by | order by sum(E) desc |
| 列方向へ展開する | pivot | pivot C |
| 表示名を変える | label | label sum(E) '売上合計' |
たとえば商品別の売上合計を出すなら、「商品を集計単位にして、売上を合計する」と日本語で整理してから、select B, sum(E) と group by B に変換します。
式の例:
=QUERY(A1:E100,"select B, sum(E) group by B label sum(E) '売上合計'",1)
このとき確認するのは、合計対象が本当にE列か、B列に空欄や表記ゆれがないか、元データの売上合計とQUERY後の合計が一致するかです。group byが動いたことだけで合格にしません。
結果が空・エラーになるときは、式全体を書き直さない
QUERYが動かないときは、AIに「直して」と丸投げするより、症状を分けた方が早く原因へ近づけます。まず最小のselectだけに戻し、そこからwhere、group by、order byを一つずつ足します。
表は横にスクロールできます
| 症状 | 最初に確認すること | AIへ渡す追加情報 |
|---|---|---|
| Parse errorになる | quote、括弧、Clauseの順序 | 現在のquery文字列全文 |
| 結果が0件 | 条件値の表記、空白、data type | 実際に存在する値を2〜3件 |
| headerがdataへ混ざる | 第3引数のheaders | headerが何行あるか |
| 数値が空になる | column内のdata type混在 | 問題列のsample値 |
| 集計値が合わない | group単位、重複、空欄 | 元dataの期待合計 |
Googleの公式ヘルプでは、同じcolumnに複数のdata typeが混在する場合、多数派の型がその列の型として扱われ、少数派の型がnullとして扱われることがあると案内されています。見た目が数字でも文字列として入っているセルが混ざると、集計や条件判定が期待とずれることがあります。
そのため、エラー調査では式だけを見るのではなく、問題の列から数件の実値をAIへ渡します。個人情報や機密情報が含まれるsheetなら、値を匿名化したsampleに置き換えて構造だけ共有してください。
日付条件は「見た目」と内部の型を分けて確認する
日付はQUERYでつまずきやすい項目です。sheet上で「2026/10/01」と表示されていても、日付として認識されているのか、単なる文字列なのかで条件の書き方と結果が変わります。
日付で絞り込みたい場合は、いきなり本番rangeへ適用せず、対象列の2〜3件を使って「この列は日付型として扱われているか」「境界日を含めるのか」を確認します。AIへ依頼するときも、表示値だけではなく、対象列がGoogle Sheets上で日付として扱われている前提かどうかを書きます。
月次集計などでは、開始日と終了日の境界条件が特に重要です。「10月分」のような曖昧な指定ではなく、2026-10-01以上かつ2026-11-01未満のように、どこまで含めるかを先に決めると検算しやすくなります。
QUERYを使わない方が読みやすいケースもある
QUERYは万能ではありません。AIに式を書かせられるからといって、すべてをQUERYへ寄せる必要はありません。後から他の人がsheetを保守するなら、目的が単純なほど専用関数の方が意図を読み取りやすいことがあります。
表は横にスクロールできます
| 目的 | まず候補にするもの | 判断の目安 |
|---|---|---|
| 条件に合う行をそのまま抜く | FILTER | 集計やgroupingが不要 |
| 複数条件で数値を合計する | SUMIFS | 出したい値が合計1つ中心 |
| 並べ替える | SORT | 抽出条件が複雑でない |
| 商品別・地域別に集計する | QUERY / ピボットテーブル | group byやpivotが必要 |
| 複数の処理を1本でまとめる | QUERY | select・where・groupを一緒に使いたい |
「QUERYを使うこと」自体を目的にせず、読む人が修正できるかまで含めて選ぶのが実務では重要です。
AIが作った式を採用する前の検算手順
最終確認は次の順番にすると、原因を切り分けやすくなります。
-
元dataの列記号と意味を再確認する。
-
5〜10行だけのsample範囲で式を動かす。
-
条件に一致する行を目視で数え、QUERY結果の件数と比べる。
-
集計がある場合は、元dataを手計算または別の単純な関数でも確認する。
-
header行数と列のdata typeを確認する。
-
where、group by、order byを一つずつ足し、どこで結果が変わるかを見る。
-
本番rangeへ広げた後も、件数や合計が急に変わっていないか確認する。
AIへ再修正を頼む場合は、「動きません」ではなく、現在の式、表示されたerror、sample data、期待結果、実際の結果をセットで渡します。これならAIも、構文の問題なのかデータ側の問題なのかを分けて考えられます。
AIものさしの判断
Google SheetsのQUERYをAIで作るなら、最短ルートは「自然文をそのまま式へ変える」ことではありません。先に列の意味と期待結果を固定し、AIにはClauseへ翻訳させます。
まず対象range・column map・条件・headerを整理し、少数行で最小のQUERYを動かしてください。そこからwhere、group by、order byを追加し、件数と合計を元dataへ戻って検算します。単純な抽出や合計ならFILTERやSUMIFSの方が保守しやすい場合もあります。
この記事を見ながら進めるなら、最初の一歩は自分のsheetから5〜10行だけをコピーし、列の意味と「最終的に何を出したいか」を上の依頼文へ埋めることです。完成した式だけでなく、Clauseの意味と期待結果までAIから受け取り、sampleで一致してから本番データへ広げてください。
引用・データ出典
公式情報を編集部が見た内容です。Hands-on未実施の記述は本文かここに分けています。
確認日:2026-10-07
