
GoogleスプレッドシートのQUERY関数を使うと、大量のデータから必要な情報だけを抽出したり、並べ替えたり、集計したりと、さまざまなデータ操作を行うことができます。この記事では抽出条件を指定できる、「WHERE句」について解説しているので、ぜひ参考にしてみてください。
QUERY関数とは?おさらい

QUERY関数を使うと、クエリ(データに対して実行する「処理・命令」)や、関数を組み合わせることで、さまざまな方法でデータを抽出できます。
特に、QUERY関数を使う上で最も基本となるのが、SELECT句です。この句は「どの列を抽出するか」を指示するために使用します。
たとえば、データ範囲から「C列、B列」を記載の順番で抽出したい場合、数式は以下のようになります。
例:=QUERY(A2:C5,"SELECT C, B ")
QUERY関数の引数:(データ, クエリ, [見出し])

すべての列を抽出したい場合は、SELECT *のように、アスタリスク(*)を指定します。
ただし、SELECT句は、列の指定がない場合に基本的に省略されます。省略した場合、QUERY関数は自動的にすべての列を抽出対象とします。たとえば、データ範囲のすべての列から、B列が「りんご」の行だけを抽出したい場合、SELECT句を省略して次のように記述できます。
例:=QUERY(A4:C7,"WHERE B='りんご' ")
WHERE句とは?基本的な条件指定

WHERE句は、QUERY関数の結果から、指定した条件と一致する行だけを抽出するために使います。
WHERE句には、「条件を適用したい列」と「比較演算子」、「比較したい値」を記述します。特に、比較したい値が文字列の場合は、シングルクォーテーション(')で囲んで記述します。
たとえば、A列が「みかん」の行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,"SELECT * WHERE A='みかん'")
主な比較演算子
=: 等しい (例:WHERE B = 'りんご')<>または: 等しくない (例:!=WHERE C <> 0)>: より大きい (例:WHERE C > 1000)<: より小さい (例:WHERE C < 500)>=: 以上 (例:WHERE C >= 100)<=: 以下 (例:WHERE C <= 2000)
空白・非空白の条件指定 (IS NULL, IS NOT NULL)
空白ではない行を抽出する (IS NOT NULL)

データ範囲から「空白ではない」行だけを抽出したい場合、WHERE句にIS NOT NULLを指定します。
たとえば、A列が「空白ではない」行をすべて抽出したい場合、数式は次のようになります。
例:=QUERY(A:B,"SELECT * WHERE A is not null")
空白の行を抽出する (IS NULL)

データ範囲から「空白」の行だけを抽出したい場合、WHERE句にIS NULLを指定します。
たとえば、A列が「空白」の行をすべて抽出したい場合、数式は次のようになります。
例:=QUERY(A:B,"SELECT * WHERE A is null")
部分一致による文字列の検索
~を含む(CONTAINS)

CONTAINS演算子を使うと、特定の文字列を含むデータを検索できます。
たとえば、A列に「PDF」を含む行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,"SELECT * WHERE A contains 'PDF'")
~で始まる(STARTS WITH)

STARTS WITH演算子を使うと、特定の文字列で始まるデータを検索できます。
たとえば、A列が「PDF」で始まる行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,"SELECT * WHERE A starts with 'PDF'")
~で終わる(ENDS WITH)

ENDS WITH演算子を使うと、特定の文字列で終わるデータを検索できます。
たとえば、A列が「PDF」で終わる行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,"SELECT * WHERE A ends with 'PDF'")
~を含まない(NOT CONTAINS)

CONTAINS演算子に、否定を表すNOT演算子を使うと、特定の文字列を含まないデータを検索できます。
たとえば、A列に「PDF」を含まない行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,"SELECT * WHERE not A contains 'PDF'")
ワイルドカード(LIKE)

LIKE演算子を使うと、以下のワイルドカードを使って文字列を検索できます。
%(パーセント):0文字以上の任意の文字列を表します。_(アンダースコア):任意の1文字を表します。
たとえば、A列に「PDF」を含む行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,"SELECT * WHERE A like '%PDF%'")
その他のワイルドカードの使用例
- 〜を含む:
'%PDF%'例:「PDF」を含む - 〜で始まる」
'PDF%'例:「PDF」で始まる - 〜で終わる:
'%PDF'例:「PDF」で終わる - 特定の文字数:
'_____'(アンダースコアを文字数分並べる) 例:5文字 - 特定の場所に特定の文字:
'_D%'例:2文字目が「D」
正規表現(MATCHES)

MATCHES演算子を使うと、正規表現を使って文字列を検索できます。正規表現とは、あいまいな文字列を検索するための手法の1つで、メタ文字という記号を使って、文字列のパターンを表現します。
たとえば、A列に「りんご」または「みかん」のいずれかの文字列を含む行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,"SELECT * WHERE A matches 'りんご|みかん'")
この例では、正規表現の|(または)を使って、「りんご」または「みかん」のいずれかの文字列に一致する行を抽出しています。
その他の正規表現パターン例
- 〜で始まる(
^):例:WHERE A MATCHES '^PDF'(「PDF」で始まる) - 〜で終わる(
$): 例:WHERE A MATCHES 'PDF$'(「PDF」で終わる) - 数字のみの文字列(
\d+):例:WHERE A MATCHES '^\d+$'(数字のみ) - 特定の文字のいずれかを含む(
[]):例:WHERE A MATCHES '[ABC]'(A, B, C のいずれかを含む) - 特定の回数繰り返す(
{n}や{n,m}): 例:WHERE A MATCHES '^\d{5}$'(5桁の数字)
複数条件(AND・OR)を指定する方法
AND条件の場合

複数の条件の両方と一致する行を抽出したい場合、列と条件のセットをANDで繋ぎます。
たとえば、「B列が1000以上」かつ「A列が空白ではない」行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,"SELECT * WHERE B>=1000 AND A is not null")
OR条件の場合

複数の条件のいずれかと一致する行を抽出したい場合、列と条件のセットをORで繋ぎます。
たとえば、「B列が500以下」または「A列が空白」の行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,”SELECT * WHERE B<=500 OR A is null”)
条件をセル参照にする方法
条件が文字列の場合

WHERE句で参照する値が「文字列」の場合、&を使って、セルの値をシングルクォーテーション(')で囲む必要があります。
このとき、' を文字列として扱うために、さらにダブルクォーテーション(")で囲み、D2セルを挟む形にします。
たとえば、A列が「D2セル」の値と一致する行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,"SELECT B WHERE A='"&D2&"'")
条件が数値の場合

WHERE句で参照する値が「数値」の場合、比較演算子まででダブルクォーテーション(")を閉じ、その後ろに&でセル参照を連結します。
たとえば、B列がD2セル以上の条件を満たす行を抽出したい場合、数式は次のようになります。
例:=QUERY(A1:B5,"SELECT A WHERE B>="&D2)
QUERY関数のその他のクエリ
今回はWHERE句を中心に解説しましたが、QUERY関数で使えるクエリには、他にも以下のようなものがあります。
SELECT句: 特定の列を指定した順序で抽出します。(詳細記事はこちら)WHERE句: 指定した条件を満たすデータのみを抽出します。(この記事で解説)GROUP BY句: 指定した列の同じ要素ごとにデータを集計します。(詳細記事はこちら)PIVOT句: GROUP BYで集計したデータに分類要素を追加し、表の形式を変換します。(詳細記事はこちら)ORDER BY句: データを特定の列の値で並べ替えます。(詳細記事はこちら)LIMIT句: 抽出する行数を指定した数に制限します。(詳細記事はこちら)OFFSET句: 指定した数の最初の行をスキップします。(詳細記事はこちら)LABEL句: 抽出した列のヘッダー名を任意の名前に変更します。(詳細記事はこちら)FORMAT句: 特定の列の日付や数値などの表示形式を設定します。(詳細記事はこちら)OPTIONS句: ヘッダーの行数や特定の書式設定を適用しないなどの追加オプションを設定します。