みなさんこんにちは!
もり(@moripro3)です。
GoogleスプレッドシートQUERY関数の使い方をシリーズでお届けしています!
前回はwhere句の条件に「時刻」を指定する方法を紹介しました。
これまでシリーズを通して紹介してきた抽出は、すべて「単一条件の指定」でした。
会社の実務では、1つの条件だけでなく、複数の条件を組み合わせる必要があると思います。この記事では、where句に複数の条件を指定する方法を紹介します。
それではみていきましょう!
単一条件と複数条件とは
まずは用語の確認からしていきましょう。
- 単一条件
- 複数条件
「単一条件」とは「条件が1つだけ」という意味です。たとえば、このようなシンプルな指定です。
- 価格が1,000円以上の商品
- ○○さんが購入した商品
それに対して、「複数条件」とは、「2つ以上の条件」のことです。
- ○○さんが購入した1,000円以上の商品
QUERY関数のwhere句で複数条件を指定するための、2つの新しい「論理演算子」を紹介します。
- or … AまたはB(いずれかの条件に合致する)
- and … AかつB(すべての条件に合致する)
この or と and は、スプレッドシートの他の関数で使っている方もいるでしょう。
それでは、この備品購入リストを使用して、複数条件のデータ抽出方法を紹介します。
orを使用した複数条件の指定
where句の条件を or で結合すると、いずれかの条件に合致する行のみを抽出できます。
or を使用して、備品購入リストから、モリとテラドが購入した備品一覧を抽出してみます。条件はこの2つです。
- 条件1:E列購入者が「モリ」
- 条件2:E列購入者が「テラド」
条件1 と 条件2 を or結合 する書き方がこちらです。
=query('備品購入リスト'!A:E,"select * where E = 'モリ' or E = 'テラド'",1)
ポイントは、同じ列(ここではE列)の条件を指定する場合でも、列名を省略せずに、条件ごとに記述することです。
andを使用した複数条件の指定
where句の条件を and で結合すると、複数条件のすべてに合致する行のみを抽出できます。
- 条件1:E列購入者が「モリ」
- 条件2:D列単価が1,000円以上
条件1 と 条件2 を and結合 します。
=query('備品購入リスト'!A:E,"select * where E = 'モリ' and D >= 1000",1)
条件は、3つ以上を組み合わせることも可能です。条件3を加えてみます。
- 条件1:E列購入者が「モリ」
- 条件2:D列単価が1,000円以上
- 条件3:D列単価が10,000円未満
これで、モリが購入した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
and と or の組み合わせ・その2
「すべてのOA機器」と「1,000円以上の事務用品」の一覧を抽出してみましょう。
水色(5行)と緑色(2行)の、計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)
まとめ
今回の記事では、where句で複数条件を指定する方法をお伝えしました。
and, or の考え方は、VBA・GASなどのプログラミングでも大いに役立ちますよ!ワンランク上の事務職を目指す方は、ぜひ覚えておきたいですね。
頭の中で考えて混乱しそうな時は、条件を紙に書き出して整理してみるのもオススメです。
さて、ここまでのシリーズを通して、QUERY関数の基本であるselect句とwhere句を紹介してきました。
- select句で列の抽出をする方法
- where句で行の抽出をする方法
次回は、select句・where句でデータを抽出しつつ、その抽出結果を並び替える方法を紹介します。
連載目次:GoogleスプレッドシートQUERY関数をマスターしよう
スプレッドシートのQUERY関数を使って、データ抽出・集計を効率化する方法を紹介しています。
- スプレッドシートのQUERY関数を使う最初の一歩!クエリを理解する
- QUERY関数の基本!別シートのデータからselect句で列を取得する方法
- 【QUERY関数】where句と比較演算子を使って単一条件に一致した行を抽出する
- 【QUERY関数】where句とlike演算子を使用して指定の文字を含む行を抽出する
- 【QUERY関数】where句で日付データを条件にして行を抽出する
- 【QUERY関数】where句で時刻データを条件にして行を抽出する
- 【QUERY関数】where句でand,orを使用して複数条件を指定する
- 【QUERY関数】order by句で抽出結果を昇順・降順ソートする
- 【QUERY関数】group by句とcount関数で列のデータ数をカウントする
- 【QUERY関数】group by句とsum関数で列の値の合計値を求める
- 【QUERY関数】group by句とavg関数で列の値の平均値を求める
- 【QUERY関数】group by句とmax・min関数で列の最大値・最小値を求める
- 【QUERY関数】group by句で複数の列をグループ化して集計する