【QUERY関数】where句でand,orを使用して複数条件を指定する方法

QUERY関数7アイキャッチ

みなさんこんにちは!
もり(@moripro3)です。

GoogleスプレッドシートQUERY関数の使い方をシリーズでお届けしています!

前回はwhere句の条件に「時刻」を指定する方法を紹介しました。

【QUERY関数】where句で時刻データを条件にして行を抽出する
GoogleスプレッドシートのQUERY関数を紹介するシリーズ。第六回目は、where句の条件に時刻を指定する方法です。指定の時刻以前・以降のデータを抽出する方法、現在時刻を基準としてデータ抽出する方法を紹介しています。

これまでシリーズを通して紹介してきた抽出は、すべて「単一条件の指定」でした。

会社の実務では、1つの条件だけでなく、複数の条件を組み合わせる必要があると思います。この記事では、where句に複数の条件を指定する方法を紹介します。

それではみていきましょう!

スポンサーリンク

単一条件と複数条件とは

まずは用語の確認からしていきましょう。

  1. 単一条件
  2. 複数条件

「単一条件」とは「条件が1つだけ」という意味です。たとえば、このようなシンプルな指定です。

  • 価格が1,000円以上の商品
  • ○○さんが購入した商品

それに対して、「複数条件」とは、「2つ以上の条件」のことです。

  • ○○さんが購入した1,000円以上の商品

QUERY関数のwhere句で複数条件を指定するための、2つの新しい「論理演算子」を紹介します。

  1. or … AまたはB(いずれかの条件に合致する)
  2. and … AかつB(すべての条件に合致する)

この or と and は、スプレッドシートの他の関数で使っている方もいるでしょう。

それでは、この備品購入リストを使用して、複数条件のデータ抽出方法を紹介します。

query7-1

orを使用した複数条件の指定

where句の条件を or で結合すると、いずれかの条件に合致する行のみを抽出できます。

where 条件1 or 条件2 or 条件3…

or を使用して、備品購入リストから、モリとテラドが購入した備品一覧を抽出してみます。条件はこの2つです。

  • 条件1:E列購入者が「モリ」
  • 条件2:E列購入者が「テラド」

条件1 と 条件2 を or結合 する書き方がこちらです。

=query('備品購入リスト'!A:E,"select * where E = 'モリ' or E = 'テラド'",1)

query7-4

ポイントは、同じ列(ここではE列)の条件を指定する場合でも、列名を省略せずに、条件ごとに記述することです。

where E = ‘モリ’ or E = ‘テラド’
where E = ‘モリ’ or ‘テラド’

andを使用した複数条件の指定

where句の条件を and で結合すると、複数条件のすべてに合致する行のみを抽出できます。

where 条件1 and 条件2 and 条件3…
モリが購入した1,000円以上の備品一覧を抽出してみます。条件はこの2つです。
  • 条件1:E列購入者が「モリ」
  • 条件2:D列単価が1,000円以上

条件1 と 条件2 を and結合 します。

=query('備品購入リスト'!A:E,"select * where E = 'モリ' and D >= 1000",1)

query7-2

 

条件は、3つ以上を組み合わせることも可能です。条件3を加えてみます。

  • 条件1:E列購入者が「モリ」
  • 条件2:D列単価が1,000円以上
  • 条件3:D列単価が10,000円未満

query7-3

これで、モリが購入した1,000円以上10,000円未満の一覧を取得できました。

and と or を組み合わせた複数条件の指定

ここまでの知識を組み合わせて、実務を想定した、高度な抽出を2つ紹介します!

and と or の組み合わせ・その1

「モリまたはテラドが購入した1,000円以上の備品」の一覧を抽出してみます。

まずは条件を整理します。

  • 条件1:購入者が「モリ」または「テラド」
  • 条件2:単価が1,000円以上

QUERY関数の書き方がこちらです。

=query('備品購入リスト'!A:E,"select * where (E = 'モリ' or E = 'テラド') and D >= 1000",1)

【解説】条件1を or結合 で作成し、条件1 と 条件2 を and結合します。

  • 条件1:E列が「モリ」または「テラド」
    • (E = ‘モリ’ or E = ‘テラド’)
  • 条件2:D列が1,000円以上
    • D >= 1000

query7-6

and と or の組み合わせ・その2

「すべてのOA機器」と「1,000円以上の事務用品」の一覧を抽出してみましょう。
水色(5行)と緑色(2行)の、計7行が抽出できれば正解です。

query7-7

条件を整理します。

  • 条件1:区分が「OA機器」… 水色の行
  • 条件2:区分が「事務用品」、かつ、単価が1,000円以上 … 緑色の行

QUERY関数の書き方がこちらです。

=query('備品購入リスト'!A:E,"select * where B = 'OA機器' or (B = '事務用品' and D >= 1000)",1)

【解説】条件2を and結合 で作成し、条件1 と 条件2 を or結合します。

  • 条件1:B列 が「OA機器」
    • B = ‘OA機器’
  • 条件2:区分が「事務用品」、かつ、単価が1,000円以上
    • (B = ‘事務用品’ and D >= 1000)

query7-5

まとめ

今回の記事では、where句で複数条件を指定する方法をお伝えしました。

and, or の考え方は、VBA・GASなどのプログラミングでも大いに役立ちますよ!ワンランク上の事務職を目指す方は、ぜひ覚えておきたいですね。

頭の中で考えて混乱しそうな時は、条件を紙に書き出して整理してみるのもオススメです。

さて、ここまでのシリーズを通して、QUERY関数の基本であるselect句とwhere句を紹介してきました。

  • select句で列の抽出をする方法
  • where句で行の抽出をする方法

次回は、select句・where句でデータを抽出しつつ、その抽出結果を並び替える方法を紹介します。

【QUERY関数】order by句で抽出結果を昇順・降順ソートする
GoogleスプレッドシートのQUERY関数を紹介するシリーズ。第八回目は、order by句を使用して、抽出結果をソートする方法の紹介です。descで降順ソート・ascで昇順ソートができます。

連載目次:GoogleスプレッドシートQUERY関数をマスターしよう

スプレッドシートのQUERY関数を使って、データ抽出・集計を効率化する方法を紹介しています。

  1. スプレッドシートのQUERY関数を使う最初の一歩!クエリを理解する
  2. QUERY関数の基本!別シートのデータからselect句で列を取得する方法
  3. 【QUERY関数】where句と比較演算子を使って単一条件に一致した行を抽出する
  4. 【QUERY関数】where句とlike演算子を使用して指定の文字を含む行を抽出する
  5. 【QUERY関数】where句で日付データを条件にして行を抽出する
  6. 【QUERY関数】where句で時刻データを条件にして行を抽出する
  7. 【QUERY関数】where句でand,orを使用して複数条件を指定する
  8. 【QUERY関数】order by句で抽出結果を昇順・降順ソートする
  9. 【QUERY関数】group by句とcount関数で列のデータ数をカウントする
  10. 【QUERY関数】group by句とsum関数で列の値の合計値を求める
  11. 【QUERY関数】group by句とavg関数で列の値の平均値を求める
  12. 【QUERY関数】group by句とmax・min関数で列の最大値・最小値を求める
  13. 【QUERY関数】group by句で複数の列をグループ化して集計する
タイトルとURLをコピーしました