vlookup関数で文字列を含む検索をする【Excel/スプレッドシート】

今回は、vlookup関数で文字列を含む等の”あいまい”な検索をしたい、というケースを解説していきます。

複数の条件を使った検索をしたい、という人は別記事を書いてますのでそちらを参照して下さい。

vlookup関数で想定通りのエラーは表示しないようにする【業務で使える応用編もあり】

vlookup関数でワイルドカードを使って含む(部分一致)検索をする

vlookup関数に限らず、Excelやスプレッドシートでは「○○を含む」と指定したい場合はワイルドカードという記号「*」を使って指定をしていきます。文字列・数値等の前後にワイルドカードをつけることで「含む」を指定できる、という仕組みです。

早速例で紹介をしていきます。

商品リストがあり、その価格を表示します。
商品番号の一部しかわからず、あいまい検索をしたい、というケース。

文字列で指定する

商品番号に「4」が含まれていることがわかっている場合は、

=VLOOKUP(”*4*” , A:C , 3 , false)

と指定してあげることで「4」を商品番号に含む商品の価格を検索する、という指示を出すことができます。

4の前後に「*」をつけることで、「4の前か後ろになにか含んでいるもの」という指定を行い、検索をすることができます。
この例ではダブルクオーテーションで囲っているため、動的ではなく大量に含む検索をしたいときに不便です。
そのためセルで指定する例を次に紹介します。

セルで指定する

セルで指定する場合は、ワイルドカードを文字列として指定して上げる必要があります。

間違えがちな例は
=VLOOKUP(“*E4*”,A2:C7,3,false)
を指定しまうことです。
これでは「E4という文字列を含む」検索になってしまいます。

そのため、少し工夫をして、「&」を使います。&を使うことでセルと文字列を結合することができます。

=VLOOKUP(“*”&E4&”*”,A2:C7,3,false)

これでワイルドカードは文字列として、E4はセルとして指定することができました。
結果を見るとちゃんと検索できていることがわかります。

これで基本的な「含む検索」はできます。
次からは少し応用して、様々な含む検索の方法を紹介していきます。

ワイルドカードを使った含む検索の種類

ワイルドカードを使った”含む”の指定にはいくつか種類があります。

部分一致

その文字列が含んでいれば場所は問わない 、という場合は上記で紹介した内容が基本的には使われます。
更に応用をすると、
商品番号がEと4を含んでいるものを検索したい、というケースでは、

=VLOOKUP(“*E*4*”,A2:C7,3,false)

なんて指定も行うことができます。
これは、Eと4を含んでいて、Eと4の間に何かしらの文字が入っているものを検索してくれます。
ワイルドカード、便利です。

広報一致

文字列の前しか検索したくない場合、
例えば商品名にワードを含む検索をしたいが、

・クロスワードプラン
・ワードプラスプラン

この2つのうちワードプラスプランの価格を抽出をしたい場合、
「”*ワード*”」と指定してしまうと両方が当てはまってしまいますよね。
この場合は
「”ワード*”」と指定をしてあげます。

これで、”ワード”という文字列から始まり、これより後ろに何かが含まれる検索、を行うことができます。

=VLOOKUP(“ワード*”,B2:C7,2,false)

前方一致

反対に前方での検索も可能です。
これは後方一致の逆ですね。

=VLOOKUP(“*ワードプラン”,B2:C8,2,false)

と検索することで”ワードプラン”という文字列で終わり、その前に何かが含まれる検索、を行うことができます。

指定の文字数を含む検索

最後に特殊な「?」を使った指定を解説します。
「?」を使うことで、前後に○文字だけ含む検索を行うことができます。

例えば、
=VLOOKUP(“???ワード??????”,B2:C8,2,false)

とすると
「ワード」の前には3文字、後に6文字を含むものを検索して下さい、という指示になります。

=VLOOKUP(“*ワード*”,B2:C8,2,false)

のように指定するよりもより細く検索を行うことができますね!

まとめ

今回はvlookup関数の検索値で”含む検索をする”を解説していきました。
ワイルドカードは普段からかなり使う関数です。
vlookup以外でも使う場面は多いと思うので、ぜひ試してみて下さい。