スプレッドシートのQUERY関数で複数の条件を指定するときは、where のあとに条件を書き、「両方を満たす」なら and、「どちらかを満たす」なら or でつなぎます。
and と or を一緒に使うときは、かっこで囲んで、どの条件をまとめるかをはっきりさせます。
この記事は、担当者や地域、金額などの条件を組み合わせて、表から行を取り出したい方に向けたものです。
記事の式は、2026年10月15日にGoogleスプレッドシートで実際に入力し、結果の行を確かめました。
例に使う表
A列に日付、B列に担当、C列に地域、D列に金額が入った、見出し付きの表(A1:D9)を使います。
| 日付 | 担当 | 地域 | 金額 |
|---|---|---|---|
| 2026/10/01 | 佐藤 | 東京 | 12000 |
| 2026/10/02 | 鈴木 | 大阪 | 8000 |
| 2026/10/03 | 佐藤 | 大阪 | 15000 |
| 2026/10/05 | 田中 | 東京 | 5000 |
| 2026/10/07 | 鈴木 | 東京 | 22000 |
| 2026/10/08 | 佐藤 | 名古屋 | 9000 |
| 2026/10/10 | 田中 | 大阪 | 18000 |
| 2026/10/12 | 鈴木 | 名古屋 | (空欄) |
QUERY関数の3つ目の引数の1は、1行目が見出しであることを表します(Googleドキュメントエディタヘルプ:QUERY関数)。
両方の条件を満たす行を取り出す(and)
担当が佐藤で、金額が10000以上の行を取り出す式です。
=QUERY(A1:D9,"select A,B,C,D where B = '佐藤' and D >= 10000",1)結果は、10月1日(東京、12000)と10月3日(大阪、15000)の2行でした。
文字列はシングルクォーテーションで囲み、数値はそのまま書きます。
どちらかの条件を満たす行を取り出す(or)
地域が東京か大阪の行を取り出す式です。
=QUERY(A1:D9,"select A,B,C,D where C = '東京' or C = '大阪'",1)結果は、東京と大阪の5行で、名古屋の2行は含まれませんでした。
and と or を組み合わせるときは、かっこで囲む
担当が佐藤で、地域が東京か大阪の行を取り出したい場合は、or の部分をかっこで囲みます。
=QUERY(A1:D9,"select A,B,C,D where B = '佐藤' and (C = '東京' or C = '大阪')",1)結果は、佐藤の東京(10月1日)と大阪(10月3日)の2行でした。
かっこを付けないと、結果が変わる
同じ条件をかっこなしで書くと、次のようになります。
=QUERY(A1:D9,"select A,B,C,D where B = '佐藤' and C = '東京' or C = '大阪'",1)この式の結果は、佐藤の東京の1行に加えて、担当に関係なく大阪の3行がすべて入った4行になりました。
「佐藤かつ東京」と「大阪」のどちらかを満たす、という意味に解釈されたためです。
Googleのクエリ言語のリファレンスでも、and、or、not で条件をつなげられ、かっこで優先順位をはっきり指定できると説明されています(Google Charts:Query Language Reference)。
and と or を混ぜるときは、まとめたい条件を必ずかっこで囲むと、意図しない行が入るのを防げます。
条件をセルで指定する
条件を式の中に直接書かず、セルに入れておくと、セルを書き換えるだけで結果を変えられます。
Z1に「佐藤」、Z2に「10000」を入れた場合の式です。
=QUERY(A1:D9,"select A,B,C,D where B = '"&Z1&"' and D >= "&Z2,1)結果は、直接書いたときと同じ2行でした。
文字列のセルを使うときは、ダブルクォーテーションの外に出して & でつなぎ、その前後をシングルクォーテーションで囲みます。
数値のセルは、シングルクォーテーションで囲みません。
Z3に「東京」を入れて、担当と地域の両方をセルで指定することもできます。
=QUERY(A1:D9,"select A,B,C,D where B = '"&Z1&"' and C = '"&Z3&"'",1)この式の結果は、10月1日の1行でした。
そのほかの条件の書き方
| 書き方 | 意味 | 例の表での結果 |
|---|---|---|
| contains | その文字を含む(地域に「阪」を含む) | 大阪の3行 |
| like | % を使ったあいまいな一致(担当が「藤」で終わる) | 佐藤の3行 |
| not | 条件を満たさない(地域が東京ではない) | 東京以外の5行 |
| is not null | 空欄ではない(金額が空欄ではない) | 金額が空欄の行を除く |
表の4つの条件は、where のあとに次のように書きます。
where C contains '阪'
where B like '%藤'
where not C = '東京'
where D is not nullリファレンスでは、contains などの文字列の比較は大文字と小文字を区別すると説明されています。
「金額が空欄ではない鈴木の行」を取り出す式は、次のとおりです。
=QUERY(A1:D9,"select A,B,C,D where D is not null and B = '鈴木'",1)結果は2行で、金額が空欄の10月12日の行は含まれませんでした。
エラーになるとき
文字列をシングルクォーテーションで囲まずに書くと、エラーになります。
=QUERY(A1:D9,"select A,B,C,D where B = 佐藤",1)この式は「#VALUE!」になり、エラーの内容は「Unable to parse query string for Function QUERY parameter 2: PARSE_ERROR」で始まっていました。
- 文字列の条件を、シングルクォーテーションで囲んでいるか
- and と or の組み合わせに、かっこを付けているか
- セル参照の & の前後で、引用符が閉じているか
- 列の指定(A、B、C…)が、範囲の中の列になっているか
日付を条件にする場合は、日付の書き方に決まりがあるため、スプレッドシートのQUERYで日付を抽出する方法を参考にしてください。
複数のシートをまとめて集計する方法は、QUERY関数で複数シートのデータを一括集計する方法で説明しています。
