【QUERY関数②】コピペ可|複数条件(or/and)と部分一致(like)

関数教室
新任
新任

前回の話で、QUERYがシートからデータを自在に切り出せる魔法の関数であることは分かりました!

人事のプロ
人事のプロ

魔法…(笑)
でも確かに、使いこなせば従来の作業工数を半分以下に減らすポテンシャルはあるわね。

新任
新任

すごい!
もっとQUERYについて詳しく教えて下さい!

人事のプロ
人事のプロ

今回は、ターゲットが明確更に絞り込みたい時の「複数条件」と、逆に不明確キーワード検索したい時の「部分一致」について覚えていきましょう!

この記事を読んだら
  • 行(従業員)を複数条件(かつ・または)指定することで、より精緻な絞り込みができる
    • いくつもの列でフィルターする(更新時には外す)作業工数を削減
  • 行(従業員)を部分一致で条件指定することで、特定のキーワードによる抽出ができる
    • 値で検索やチェックをつけてフィルターする(更新時には外す)作業工数を削減

【and/or】複数の条件で抽出

前回の記事では、QUERY関数を理解頂くために1つの条件で抽出しましたが、より実務で活用できるように複数条件の方法を解説します

今回も、読売ジャイアンツを例に見ていきましょう。

読売ジャイアンツの選手データ
プロ野球データFreak2020年データより

条件一致(当てはまるもの全て)

and(かつ)

例えば、この中から「北海道出身の投手」を抜き出したい時。

新任
新任

D列が投手で、かつL列が北海道ってことですよね?
頭では分かっているけど、関数にできる自信はないです…。

人事のプロ
人事のプロ

それでいいのよ!

頭の中で整理できていれば、後は当てはめるだけ。

このままやり方を見ていきましょう。

守備が「投手」かつ出身地が「北海道」の選手を、QUERY関数で抽出すると、以下のようになります。

新任
新任

andで単純に繋ぐだけなんですね!

これならすぐに使えそう!

人事のプロ
人事のプロ

かつ(and)」条件はこんな感じね。

あわせて「または(or)」条件も覚えてしまいましょう。

or(または)

守備が「投手」かつ出身が「東京」または「神奈川」の選手を、QUERY関数で抽出すると、以下のようになります。

スプレッドシートでQUERY関数を使用して、守備が「投手」かつ出身が「東京」または「神奈川」の選手を抜き出したキャプチャ
新任
新任

orで区切るだけですね!
ただ、何だか少しくどい気がします…。

人事のプロ
人事のプロ

それはQUERY関数の仕組みを理解することで納得できるはず。
whereという箱の中で「どのように抽出するか」という条件を定義する時、or「間仕切り」のイメージかしら。
and(かつ)で条件を絞り込んでも、後から全く別の条件をプラスすることが可能になるわ。

QUERY関数のwhere句の中で、「or」をはさむことによって条件式を区分できることを表した図
「or」をはさむことによって条件式を区分できる

行の抽出条件となるwhere句の中で、より詳細な条件を設定する場合にand/orを使用します。

以下の文字列をコピーして使ってみましょう。(緑文字を置き換え)

=query('シート名'!$この列から:$この列まで,"select 列①,列②,列③ where 検索列①='検索条件①' and 検索列②='検索条件②' or 検索列①='検索条件①' and 検索列②='検索条件③'")

Copy
  • and(かつ)
    • 接続した条件式について、全てを満たす行を抽出
  • or(または)
    • 接続した条件式について、いずれかを満たす行を抽出

【補足】シートに関数をコピーする方法
  • 貼り付けたいセルにカーソルを合わせて「fx」欄に貼り付け
    • キーボード「F2」ボタン(セル編集)を押してから貼り付けでも可
スプレッドシートに関数をコピペするには、対象セルにカーソルを合わせて「fx」欄に貼り付けることを説明したキャプチャ

条件不一致(当てはまらないもの全て)

and(かつ)[否定]

「北海道出身ではない投手」を抜き出したい時は、以下のようになります。

スプレッドシートでQUERY関数を使用して、北海道出身ではない投手を抜き出したキャプチャ
新任
新任

出身地が北海道ではなくかつ守備が投手、ということですね!

これは言葉通りなので分かりやすいです。

人事のプロ
人事のプロ

そうやって項目(列)ごとに条件を判断していけば、数式の作り方が見えてくるわね。

not(否定)の効力は、すぐ後ろの文にだけ掛かってくるものと覚えておきましょう。

or(または)[否定]

「野手のうち、高卒ルーキー(1年目・19歳)と在籍2年目以上(※)を抜き出したい時は、以下のようになります。
※1年目のうち大卒や外国人選手を除くという意図

スプレッドシートでQUERY関数を使用して、野手のうち、高卒ルーキー(1年目・19歳)と在籍2年目以上を抜き出したキャプチャ
新任
新任

うおお…!

えっと、orをはさむと前後で条件式が分かれるので、投手以外(野手)の19歳(高卒ルーキー)または投手以外(野手)の1年目以外(2年目以上)…ということですね?!

人事のプロ
人事のプロ

その通り!

これが分かれば、and/or、それぞれの肯定否定、全て大丈夫ね!

【like+%】条件の部分一致で抽出

QUERYは非常に柔軟性の高い関数で、数式の後半を少し変えるだけ部分的な条件一致も抽出できます

新任
新任

それっぽいものを全て抽出できるってことですよね?
実務でかなり使えそう!

人事のプロ
人事のプロ

そういう捉え方もできるわね。

これを活用すれば、無理にandやorを使って長い数式を組まずに済むので、習得しない手はないわ

引き続き、読売ジャイアンツを例に見ていきましょう。

読売ジャイアンツの選手データ
プロ野球データFreak2020年データより

部分的な条件一致(含むもの全て)

前回の記事では、where D='投手'という形で、D列(守備)が「投手」という文字列と完全一致する行(選手)を抽出しました。

では、「左投げの投手」を抽出したい時。
K列利き腕の情報はありますが、投打が1つのセルにまとめられており、先程と同じ方法では難しそうですね。

そんな時は、部分的な条件一致を抽出できるLIKE%を組み合わせてみましょう

数式に反映させて抽出すると、以下のようになります。

スプレッドシートでQUERY関数を使用して、「左投げ」の「投手」を抜き出したキャプチャ
新任
新任

likeはイメージつくのですが、%ってなんですか?!

人事のプロ
人事のプロ

どのように部分一致しているかを指定するために%を使っているのよ。

このケースではD列(投打)セル前方「投球時の利き腕」を指しているので、前方一致で抽出できるわね。

以下の3パターンがあるので、状況に応じて使い分けましょう。

行の抽出条件となるwhere句の中で、部分的(曖昧)な一致条件を設定する場合にLIKE+%を使用します。

=query('シート名'!$この列から:$この列まで,"select 列①,列②,列③ where 検索列①='検索条件①' and 検索列② like '%検索条件②%'")

Copy
  • %(後に%)
    • 〜から始まる文字列
  • %〜(前に%)
    • 〜で終わる文字列
  • %%(前後に%)
    • 〜を含む文字列 おすすめ

部分的な条件不一致(含まないもの全て)

「投手と捕手」消去法で抜き出したい時は、以下のようになります。

スプレッドシートでQUERY関数を使用して、「投手と捕手」を消去法で抜き出したキャプチャ
新任
新任

「野手」という文字列を含まないものを条件にすることで、内野手と外野手は対象外となり、結果的に投手捕手だけが抽出される…なるほど!
上手く使えば、数式もコンパクトになりますね!

人事のプロ
人事のプロ

複数条件部分一致を、否定(not)もあわせて使い分けることができれば、QUERYの基礎知識は充分よ!

これで従業員情報自由自在に抜き出せるわね。

でも、実はまだまだ便利な使い方があるのよ…。

なお、部分一致の抽出条件をセル参照する方法は、こちらの記事で解説しているのであわせてご覧下さい。

今回は、より実務に則した使い方として「複数条件」「部分一致」について解説しました。

これらを活用すれば、名簿等リスト作成のためにデータベースを切り貼りする必要はなくなるでしょう。

スプレッドシートの更なる仕組み化に向けて、次回QUERY関数数値データを操る方法を解説します。

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