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

「セル参照したい」と考えるようになるのは成長の証ね!
作業ミスを防ぐには、なるべく式の中を修正しない作り方が大切よ。
但し、QUERY関数の中でセル参照するにはルールがあるので、覚えるように。
- データベースの行を部分一致でキーワード抽出できる
- セル参照の方法を知ることで、条件変更時の式修正が不要になる
- 工数の削減を通じて作業ミスを抑制
- 指定したセルにキーワードを入力することで抽出条件を変更できる
復習:likeの基本的な使い方
まずはQUERY関数の部分一致について復習しましょう。(詳しい解説はこちら)
行の抽出条件となるwhere句の中で、部分的な一致条件を設定するのがlikeの役割でしたね。
大量のアンケート結果から特定のキーワードを含むものだけ抽出したり、条件が曖昧で「それっぽいセル」を全部抜き出したい時などに便利です。
以下の文字列をコピーして使ってみましょう。(緑文字を置き換え)
=query('シート名'!$この列から:$この列まで,"select 列①,列②,列③ where 検索列 like '%検索条件%'")
- 〜%(後に%)
- 〜から始まる文字列
- %〜(前に%)
- 〜で終わる文字列
- %〜%(前後に%)
- 〜を含む文字列 おすすめ
- 貼り付けたいセルにカーソルを合わせて「fx」欄に貼り付け
- キーボード「F2」ボタン(セル編集)を押してから貼り付けでも可

別セルに入力した抽出条件を参照する方法
今回は、第5回AKB48選抜総選挙を例に見ていきましょう。
D列の「チーム」情報を使って、チームA・チームK・チームBをセル参照で抽出します。

特定のキーワードで抽出する場合
まずはチームAから。
抽出条件としては「D列に『A』という文字列を含む行」になります。
そのように条件指定することで、18位の峯岸みなみ(A研)も関数で拾うことができます。

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

そこはもう触れないであげて。
G列2行目に入力した「A」をキーワードに部分一致で抽出すると、以下のようになります。


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

これがQUERY関数でセル参照する時のルールよ。
「"&セル番地&"」という感じで挟み込むのがポイント。
これがないと「G2」という文字列が条件になってしまうので、忘れないように。
=query('シート名'!$この列から:$この列まで,"select 列①,列②,列③ where 検索列 like '%"&セル番地&"%'")
- QUERY関数の中でセル番地として認識させるために"(ダブルコーテーション)と&(アンド)で挟み込む

また、日付条件をセル参照する方法については、こちらの記事で解説しているので、参考にしてみて下さい
除外したいキーワードがある場合
次は、同じ方法でチームKも抽出していきましょう。
G列2行目のキーワードを「A」から「K」に打ち替えます。


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

チーム名に「K」を含むものが他にもあったようね。
その場合は「KⅡ」と「JKT」を除いてしまいましょう。
H-I列の2行目に除外するキーワードを入力します。
notで否定形にした上でそれらをセル参照し、andで元の数式に接続すると、以下のようになります。

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


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

その通り。
セル参照を活用すれば、このようにキーワードを打ち替えるだけで条件を変更できるの。
また、抽出条件をパッと見て分かるのもメリットね。
=query('シート名'!$この列から:$この列まで,"select 列①,列②,列③ where 検索列① like '%"&セル番地①&"%' and not 検索列② like '%"&セル番地②&"%'")
- セル参照は否定形でも使用可能
今回は、部分一致の抽出条件をセル参照する方法について解説しました。
QUERY関数は便利である反面、どうしても数式が複雑になってしまうので、セル参照を積極的に活用することで作業ミスを減らしていきましょう。
また、こちらの記事では実務での活用例を紹介しているので、あわせてご覧ください。