【スプレッドシート】QUERY関数のWHERE句で条件抽出!複数条件やセル参照も解説

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

スポンサーリンク

WHERE句の基本の使い方

【スプレッドシート】QUERY関数のWHERE句で条件抽出!複数条件やセル参照も解説

WHERE句は、データの中から指定した条件に一致する行だけを抽出します。

例:A列(商品名など)が「みかん」と完全に一致するデータのみ抽出
=QUERY(A1:B5, "SELECT * WHERE A = 'みかん'")

💡 ポイント:

条件が「文字列」の場合は、シングルクォーテーション('')で囲います。

QUERY関数の引数:(データ, クエリ, [見出し])


【数式の解説】

  1. WHERE句(条件):A列の値が「みかん」と一致する行だけに絞り込みます。
  2. SELECT句(抽出する列):絞り込んだ行から、データ範囲のすべての列(*)を抽出します。

📖 SELECT句の詳しい解説は「SELECT句の使い方!」の記事をご覧ください。


【主な比較演算子一覧】

  • =: 等しい(例:WHERE B = 'みかん'
  • <> または != 等しくない (例:WHERE B <> 0)
  • >: より大きい (例:WHERE B > 1000)
  • <: より小さい (例: WHERE B < 1000)
  • >=: 以上 (例: WHERE B >= 1000)
  • <=: 以下 (例: WHERE B <= 1000)
スポンサーリンク

空白・空白以外を検索する (IS NULL, IS NOT NULL)

空白ではない行を抽出する(IS NOT NULL)

【スプレッドシート】QUERY関数のWHERE句で条件抽出!複数条件やセル参照も解説

データが入っている行だけを抽出したい場合、WHERE句に「IS NOT NULL」を指定します。

例:=QUERY(A:B,"SELECT * WHERE A IS NOT NULL")

空白の行を抽出する(IS NULL)

【スプレッドシート】QUERY関数のWHERE句で条件抽出!複数条件やセル参照も解説

入力漏れや、未対応のリストだけを抽出したい場合、WHERE句に「IS NULL」を指定します。

例:=QUERY(A:B,"SELECT * WHERE A IS NULL")

スポンサーリンク

部分一致する文字列を検索する

専用演算子を使う(おすすめ)

【スプレッドシート】QUERY関数のWHERE句で条件抽出!複数条件やセル参照も解説

専用演算子を使うことで、直感的に部分一致を指定できます。

  • 「A」を含む:=QUERY(A1:B5,"SELECT * WHERE A CONTAINS 'A'")
  • A」を含まない:=QUERY(A1:B5,"SELECT * WHERE NOT A CONTAINS 'A'")
  • A」で始まる=QUERY(A1:B5,"SELECT * WHERE A STARTS WITH 'A'")
  • A」で終わる=QUERY(A1:B5,"SELECT * WHERE A ENDS WITH 'A'")

ワイルドカードを使う(LIKE)

ワイルドカード記号を使って、「○文字目がこの文字」といった柔軟な指定ができます。

  • 「B」を含む:=QUERY(A1:B5,"SELECT * WHERE A LIKE '%B%'")
  • 3文字目が「B」:=QUERY(A1:B5, "SELECT * WHERE A LIKE '__B%'")

💡 ポイント:

  • % (パーセント):0文字以上の任意の文字列を表します。
  • _ (アンダースコア):任意の1文字を表します。

正規表現を使う(MATCHES)

【スプレッドシート】QUERY関数のWHERE句で条件抽出!複数条件やセル参照も解説

「AまたはBを含む」や「数字のみ」など、より複雑なパターンを指定できます。

  • 「A」または「B」を含む:=QUERY(A1:B5, "SELECT * WHERE A MATCHES '.*(A|B).*'")

📖 正規表現の詳しい解説は「正規表現の基本と3つの関数!」の記事をご覧ください。

スポンサーリンク

複数条件(AND・OR)を指定する方法

AND条件の場合

【QUERY関数】WHERE句で条件を指定!複数条件も!

指定したすべての条件を満たす行だけを抽出したい場合、条件同士をANDでつなぎます。

例:B列(売上)が1000以上、かつA列が空白ではない行を抽出
=QUERY(A1:B5, "SELECT * WHERE B >= 1000 AND A IS NOT NULL")

OR条件の場合

【QUERY関数】WHERE句で条件を指定!複数条件も!

指定したいずれかの条件を満たす行を抽出したい場合、条件同士をORでつなぎます。

例:B列(売上)が500以下、またはA列が空白の行を抽出
=QUERY(A1:B5, "SELECT * WHERE B <= 500 OR A IS NULL")

スポンサーリンク

条件をセル参照にする方法

条件が文字列の場合

【QUERY関数】WHERE句で条件を指定!複数条件も!

文字列を参照する場合は、&を使ってセル番地を""''で囲います。

例:A列の値がD2セルに入力された文字列と一致する行のB列を抽出
=QUERY(A1:B5, "SELECT B WHERE A = '"&D2&"'")

条件が数値の場合

【QUERY関数】WHERE句で条件を指定!複数条件も!

数値を参照して比較演算子を使う場合は、比較演算子まででダブルクォーテーション(")を閉じ、その後ろに&でセル参照を連結します

例:B列の値がD2セルに入力された数値以上の行のA列を抽出
=QUERY(A1:B5, "SELECT A WHERE B >= "&D2)

条件が日付の場合

日付を参照する場合は、dateを指定した上で、TEXT関数でyyyy-mm-dd形式に変換する必要があります。

例:A列(日付)がD2セルに入力された日付以降の行をすべて抽出
=QUERY(A1:B5, "SELECT * WHERE A >= date '"&TEXT(D2, "yyyy-mm-dd")&"'")

部分一致でセル参照を使う場合

【スプレッドシート】QUERY関数のWHERE句で条件抽出!複数条件やセル参照も解説

CONTAINSやLIKEなどの演算子を使用する場合も、文字列と同様&を使ってセル番地を""''で囲います。

例:A列にD2セルに入力された文字列が含まれる行をすべて抽出
=QUERY(A1:B5, "SELECT * WHERE A CONTAINS '"&D2&"'")

スポンサーリンク

QUERY関数のその他のクエリ

今回はWHERE句を中心に解説しましたが、QUERY関数で使えるクエリには、他にも以下のようなものがあります。

  • SELECT句:特定の列を指定した順序で抽出します。(詳細記事はこちら
  • WHERE句:指定した条件を満たすデータのみを抽出します。(この記事で解説)
  • GROUP BY句:指定した列の同じ要素ごとにデータを集計します。(詳細記事はこちら
  • PIVOT句:指定した列の値を横方向に展開し、クロス集計表を作成します。(詳細記事はこちら
  • ORDER BY句:データを特定の列の値で並べ替えます。(詳細記事はこちら
  • LIMIT句:抽出する行数を指定した数に制限します。(詳細記事はこちら
  • OFFSET句:指定した数の最初の行をスキップします。(詳細記事はこちら
  • LABEL句:抽出した列のヘッダー名を任意の名前に変更します。(詳細記事はこちら
  • FORMAT句:特定の列の日付や数値などの表示形式を設定します。(詳細記事はこちら
  • OPTIONS句:ヘッダーの行数や特定の書式設定を適用しないなどの追加オプションを設定します。
タイトルとURLをコピーしました