【QUERY関数|like】部分一致の抽出条件をセル参照する方法(AKB48編)

関数教室
新任
新任

QUERY関数のlikeを使ってキーワード抽出できるのは便利ですが、その条件ってセル参照できないんですか?
これだとキーワードを変える度に式を修正しなきゃいけないので…。

人事のプロ
人事のプロ

「セル参照したい」と考えるようになるのは成長の証ね!

作業ミスを防ぐには、なるべく式の中を修正しない作り方が大切よ。

但し、QUERY関数の中でセル参照するにはルールがあるので、覚えるように。

この記事を読んだら
  • データベースの行を部分一致でキーワード抽出できる
  • セル参照の方法を知ることで、条件変更時の式修正が不要になる
    • 工数の削減を通じて作業ミスを抑制
    • 指定したセルにキーワードを入力することで抽出条件を変更できる

復習:likeの基本的な使い方

まずはQUERY関数部分一致について復習しましょう。(詳しい解説はこちら

行の抽出条件となるwhere句の中で、部分的な一致条件を設定するのがlikeの役割でしたね。

大量のアンケート結果から特定のキーワードを含むものだけ抽出したり、条件が曖昧で「それっぽいセル」を全部抜き出したい時などに便利です。

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

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

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

別セルに入力した抽出条件を参照する方法

今回は、第5回AKB48選抜総選挙を例に見ていきましょう。

D列の「チーム」情報を使って、チームA・チームK・チームBをセル参照で抽出します。

第5回AKB48選抜総選挙の順位・名前・チーム・得票数をまとめたスプレッドシート
第5回AKB48選抜総選挙結果

特定のキーワードで抽出する場合

まずはチームAから。

抽出条件としては「D列に『A』という文字列を含む行」になります。

そのように条件指定することで、18位の峯岸みなみ(A)も関数で拾うことができます。

新任
新任

ん?峯岸みなみって何で研究生だったんでしたっけ?

人事のプロ
人事のプロ

そこはもう触れないであげて。

G列2行目に入力した「A」をキーワードに部分一致で抽出すると、以下のようになります。

スプレッドシートでQUERY関数(G列2行目に入力したキーワード「A」をセル参照)を使用して、「D列に『A』という文字列を含む行」を抽出したキャプチャ
新任
新任

likeの後ろがカオスすぎるのですが?!

人事のプロ
人事のプロ

これがQUERY関数セル参照する時のルールよ。

"&セル番地&"」という感じで挟み込むのがポイント。

これがないと「G2」という文字列が条件になってしまうので、忘れないように。

=query('シート名'!$この列から:$この列まで,"select 列①,列②,列③ where 検索列 like '%"&セル番地&"%'")

Copy
  • QUERY関数の中でセル番地として認識させるために"(ダブルコーテーション)&(アンド)で挟み込む
QUERY関数の式内がミルフィーユ状に重なっていることを示した図
関数がミルフィーユ状に重なっているので分解して考える

また、日付条件をセル参照する方法については、こちらの記事で解説しているので、参考にしてみて下さい

除外したいキーワードがある場合

次は、同じ方法でチームKも抽出していきましょう。

G列2行目のキーワードを「A」から「K」に打ち替えます。

スプレッドシートでQUERY関数(G列2行目に入力したキーワード「K」をセル参照)を使用して、「D列に『K』という文字列を含む行」を抽出したが、意図しない行も含まれてしまったキャプチャ
新任
新任

チームK以外も抽出されている…?

人事のプロ
人事のプロ

チーム名に「K」を含むものが他にもあったようね。

その場合は「KⅡ」と「JKT」を除いてしまいましょう。

H-I列の2行目に除外するキーワードを入力します。

notで否定形にした上でそれらをセル参照し、andで元の数式に接続すると、以下のようになります。

スプレッドシートでQUERY関数(G列2行目に入力したキーワード「K」をセル参照)を使用して、「D列に『K』という文字列を含む行」を、意図しない行は除外した上で抽出したキャプチャ

続けてチームBも抽出します。

スプレッドシートでQUERY関数(G列2行目に入力したキーワード「B」をセル参照)を使用して、「D列に『B』という文字列を含む行」を、意図しない行は除外した上で抽出したキャプチャ
新任
新任

"&で挟んでしまえば、どこでもセル参照ができるんですね!

人事のプロ
人事のプロ

その通り。

セル参照を活用すれば、このようにキーワードを打ち替えるだけ条件を変更できるの。

また、抽出条件をパッと見て分かるのもメリットね。

=query('シート名'!$この列から:$この列まで,"select 列①,列②,列③ where 検索列① like '%"&セル番地①&"%' and not 検索列② like '%"&セル番地②&"%'")

Copy
  • セル参照否定形でも使用可能

今回は、部分一致の抽出条件をセル参照する方法について解説しました。

QUERY関数便利である反面、どうしても数式が複雑になってしまうので、セル参照を積極的に活用することで作業ミスを減らしていきましょう

また、こちらの記事では実務での活用例を紹介しているので、あわせてご覧ください。

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