【QUERY関数】複数の条件でデータを抽出する方法

select_multi_kv おすすめ関数
おすすめ関数
この記事は約5分で読めます。
スポンサーリンク

本記事ではスプレッドシートのQUERY関数について、前回ご紹介した基本の使い方・select句の使い方を踏まえて、集計・データ抽出の効率化方法をご紹介します。

前回に引き続き、今回は応用編として複数条件を指定してデータを抽出する方法をご紹介します。面倒な作業は可能な限り効率的に、楽に終わらせましょう。

QUERY関数 基本的な使い方

まずはおさらいですが、過去記事に掲載しているので詳しい使い方はそちらに譲って、簡単にQUERY関数の使い方をざっと振り返るとこんな感じでしたね。

=QUERY(データ,クエリ,[見出し])

<データ>
どこからデータを抽出するのか、という元データの範囲。

<クエリ>
データベースに対する問い合わせのこと。「こういったデータをとってきて!」という命令文。
「”select 抽出する列 where 条件”」が基本構文。「データ」で指定した範囲全ての列を取得する場合は「select 列」部分は省略可能。

<見出し>
こちらは省略可能。データの上にある見出し行の数。

今回ご紹介するのは「クエリ」における「where 条件」の部分で、複数条件を指定する方法です。それでは早速みていきましょう。

OR条件 / AND条件の使い方

複数条件でデータを絞る場合、方法としては2つあります。それがOR条件とAND条件です。

select_multi1

なおここからご紹介する方法は、同じスプレッドシートの別シートから抽出する方法のため「F=’製造’」のように列文字列を指定していますが、抽出元のデータベースが別スプレッドシートにある場合や、複数のデータベースを統合して抽出する場合には使えません。その場合は「Col4=’製造’」のように列文字列を相対表記する必要がありますのでご注意ください

OR条件を使う方法

今回も前回の記事で使用したこちらのデータベースからデータを抽出する方法を解説していきます。ここでは業界の列が「製造」「小売」に該当する行を抽出してみます。

select_multi2

条件としては【業界の列が「製造」または(OR)「小売」に該当する行】で抽出します。QUERY関数でOR条件を使う場合はこのようになります。この時、「対象列=’値1′ or ‘値2’」のような形ではなく「対象列=’値’ or 対象列=’値’」という形で条件句全体を繰り返してorでつなぐことに注意しましょう。

=query(DB!B3:G,“select * where F=’製造’ or F=’小売'”)

select_multi3

なお上記では文字列で業界を指定していますが、ここもセル参照にしてあげると関数内をいじることが減るのでよりスマートです。

=query(DB!B3:G,”select * where F='”&J3&”‘ or F='”&K3&”‘”)

select_multi4

AND条件を使う方法

続いてAND条件で抽出するデータを絞り込む方法をみていきましょう。データベースは同じものを使います。

select_multi2

条件としては、【業界の列が「製造」かつ(AND)、顧客情報獲得月が「2023-02」に該当する行】で抽出します。QUERY関数でAND条件を使う場合はこのようになります。この時、OR条件の時と同じように、「対象列=’値1′ and ‘値2’」のような形ではなく「対象列=’値’ and 対象列=’値’」という形で条件句全体を繰り返してandでつなぎます。ちなみにAND条件を使う場合、基本的に異なる列をつなぐので「対象列=’列’」を繰り返すというのはOR条件の時よりしっくりくるのではないでしょうか。

=query(DB!B3:G,“select * where F=’製造’ AND G=’2023-02′”)

select_multi5

なお日付を指定する場合は、データベースの「顧客獲得月」列の書式が「文字列」である必要があります(セル参照するならそのセルも同様)。日付をセルに入力した場合、デフォルトでは書式が「日付」になっているので、そのままでは以下のようなエラーが発生します。「クエリが空の出力で完了しました」ということは条件に合致するデータがなかったことを意味するので、書式を確認してみてください。

select_multi6

あとはこれもセル参照に直しておしまいです。

=query(DB!B3:G,“select * where F='”&J3&”‘ AND G='”&J4&”‘”)

select_multi7

参考:書式が「日付」でも対応できるような抽出条件を用いる方法

別の記事でも解説しますが、このように日付書式でも対応する方法はあるので、書式に依存しない形で実装したい方はこちらを活用してみてください。

=query(DB!B3:G,”select * where F='”&J3&”‘ AND G=date ‘”&text(J4,”yyyy-mm-dd”)&”‘”)

select_multi8

OR条件とAND条件を併用する方法

最後に、OR条件とAND条件を併用したい場合について解説して終わりにしようと思います。この場合は少しややこしいのでまずは条件を書き出しましょう。使うデータベースはこれまでと同じものを利用します。

<適用したい条件>
①業界が「製造」または「小売」である
②顧客情報獲得月が「2023-02」である

今回は①の中がOR条件、①と②の間がAND条件になりますが、AND条件とOR条件を一緒に利用する場合は、指定したい条件が複数存在する方を括弧で括ります

=query(DB!B3:G,”select * where (F=’製造’ or F=’小売’) AND G=’2023-02′”)
※G列は文字列書式を利用

select_multi9-2

これもセル参照に変更しておしまいです。

=query(DB!B3:G,”select * where (F='”&J3&”‘ or F='”&K3&”‘) AND G='”&J4&”‘”)

select_multi10

まとめ

いかがでしたでしょうか。
今回は、QUERY関数を使って複数条件でデータを抽出する方法をご紹介しました。

ぜひ活用してみてください。

タイトルとURLをコピーしました