
今回は、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以外でも使う場面は多いと思うので、ぜひ試してみて下さい。