vlookup関数でワイルドカードを使う【部分一致検索】
vlookup関数で文字列を含む検索方法
vlookup関数で文字列を”含む”を検索したい時ありませんか?
今回は部分一致で値を参照する方法を解説していきたいと思います。
今回の記事の内容はこちら!
今回解決できること
  • ワイルドカードとは?
  • ワイルドカードの使い方
  • ワイルドカードが使えない場所
  • vlookup関数以外の方法で部分一致検索を実装する
では解説していきます。

ワイルドカードとは?

ワイルドカードとは、Excelやスプレッドシートで使える「あいまい一致」を指定できる文字列になります。
例えば「広島」と「広島県」と2つの文字列は人間であれば”一緒だろう”と推測できるのですが、パソコンの場合はそうはいきません。
こういったときにワイルドカードを使うことで2つのデータから「広島を含むもの」として検索ができるようになります。

ワイルドカードの種類

Excelとスプレッドシートにはワイルドカードが2種類あります。
用途
「*」(アスタリスク) 前または後のテキストすべてで部分一致を検索する 「広島*」の場合「広島県出身者」が検索でヒットするようになる
「?」(クエスチョン) 前または後のテキスト1文字の部分一致を検索する 「広島?」の場合「広島県」はヒットし、「広島県出身者」はヒットしない
業務上はアスタリスクを使う頻度が圧倒的に高いため、「?」(クエスチョン)は知っているくらいで問題ありません。
両方に共通することはワイルドカードをつけた方向に検索を行うということです。
「*広島」とした場合「広島県出身者」はヒットしないので注意です。

vlookup関数でのワイルドカードの使い方

ここからは具体的な使い方を解説していきます。
vlookup関数がわからないよ…という人は下記の記事を見てみて下さい。
例題をもとに解説をしていきます。
例題

文字列を使ったワイルドカードの使い方

商品名に「スプレッドシート」を含む価格を検索したい場合、
通常のように関数を書いていくと
=vlookup(”スプレッドシート” , B1:C8 , 2 , false)
と記入します。この場合は「完全一致」での検索になるため、
値が見つからず結果は「#N/A」となってしまいます。
ワイルドカードを使って記述をしてみます。
=vlookup(”*スプレッドシート*” , B1:C8 , 2 , false)
このように記述することで「スプレッドシートの前後に何かしらの文字列がある項目」=部分一致での検索ができるようになります。
結果としても「¥200000」と正しい値を取得することができました。

セルを参照したワイルドカードの使い方

しかし、文字列ではなくて、「F4セルに入っている内容を検索したいんだけど…」という場合もあると思います。
こういった場合はセルを参照して指定することも可能です。
セルを指定する場合、ワイルドカードは文字列として、セルは関数として扱う必要があります。
そのため、
=VLOOKUP(“*F4*”,B2:C8,2,false)
と記述をしてしまうと「F4という文字列を含むものを検索して」という指示になってしまうため、少し工夫が必要です。
この場合、複数の要素をつなぐ「&」を使うことで解決できます。
&は関数と文字列、関数同士をつなぐことができる便利な関数です。これを使うと…
=VLOOKUP(“*”&F4&“*”,B2:C8,2,false)
と記述をすることができます。
これで「F4セルに入っている内容を含む値を検索してね」という指示を出すことができます。
検索システムを作りたい!という場合はセル指定のほうが便利なので、覚えておくとかなり便利です。

ワイルドカードが使えない場面と注意点

範囲指定ではワイルドカードは使えない

ワイルドカードは便利ですが、一方で使えない場面もあります。
それは範囲指定においてです。
例えば
=VLOOKUP(“*スプレッドシート*”,”*”&B2&”*”&”:”&C8,2,false)
のような指定はできません。
こういった場合は「indirect関数」や「lookup関数とfind関数を使った配列形式の関数」などを使うことでクリアできますが、
かなりの応用になるため、今回は割愛します。

該当する値が2つある場合は要注意!

vlookup関数でワイルドカードを使うと、検索値が複数該当するケースが多くなります。
vlookup関数の特性として、検索は上から行い、該当した一番最初の値を出力する、という性質を持っています。
そのため該当する値が2つある場合は相対的に上にある項目が出力されるため要注意です!
慣れないうちは検索の曖昧姓をなるべく狭くしてあげることが無難な対策になります。

Excelの場合はxlookup関数も便利

Excelを使っている人であれば、xlookup関数が非常に便利です。
vlookup関数は
  • 最左列のみしか検索値として設定できない
  • 範囲の上からしか検索できない
という弱点があります。
xlookup関数はこの弱点を補った関数で

=XLOOKUP(検索値, 検索範囲, 戻り範囲, 見つからない場合, 一致モード, 検索モード)

というように指定をします。
例えば、画像のように
商品名を検索して、それに応じた商品番号を出力することができます。
vlookup関数の場合、商品名を検索値にした場合それよりも右側にある価格しか結果として出力することができません。
=XLOOKUP(E2,B2:B8,A2:A8,,2)
また、検索モードを指定することで、昇順に並び替えたり、範囲の下から検索ができたりと役に立つ場面は多くあります。
xlookup関数でワイルドカードを使う場合は、
  • 検索値でのワイルドカードを使った指定
  • 一致モードでのワイルドカード検索の指定
の2点が必要です。
実際に記述してみるとこんな感じです。
=XLOOKUP(“*”&E2&”*”,B2:B8,A2:A8,,2)
xlookup関数では引数が多いので複雑に見えますが、場面によっては大きな威力を発揮します。
自分の今の課題に応じて使い分けてみてください。

まとめ

今回はvlookup関数でのワイルドカードの使い方を解説していきました。
ワイルドカードは使う場面が非常に多いものです。
しっかりマスターして様々な場面で使えるようにしていきましょう!