5/07/2020

Excel。意外と知られていないVLOOKUP関数の検索値にワイルドカードがつかえます【Wildcard】

Excel。意外と知られていないVLOOKUP関数の検索値にワイルドカードがつかえます

<VLOOKUP関数>

意外と知られていないというか、検索抽出でお馴染みのVLOOKUP関数の検索値に『ワイルドカード』を使えますので確認してみましょう。

次のような表があります。

右側のF2:G5までが商品リスト。左側のA2:D4が発注表だとします。

B列の商品名を入力したら、C列の単価を、右側の商品リストから検索して、単価を表示させるので、C列の単価にVLOOKUP関数を使って、検索算出させています。

ごくごく普通のVLOOKUP関数なのですが、問題になるのが、F2:G5の商品リスト。

F3の商品名がマズイわけです。

単価が同じだからということで、「シロップ赤・シロップ青」と合わせていますが、単価が同じであったとしても、本来ならば、別々のレコード(行)で管理運営しないといけないわけですね。

基本的にデータベースの考え方が違うので発生しやすいケースだといえます。

VLOOKUP関数は、近似値か完全一致でないと、検索抽出してくれません。今回のようなケースでは、対応できないわけです。

念のために確認しておきましょう。

C3をクリックして、VLOOKUP関数を設定してみます。
C3の数式は、
=VLOOKUP(B3,$F$3:$G$5,2,FALSE)

検索値が、B3にするとで、「シロップ青」を検索するわけですが、当然、商品リストには、「シロップ青」はありませんので、検索方法をFALSEの完全一致にしているので、見つけることができません。

当然、検索方法をTRUEの近似値にしたところで、数値ではないので、見つけようがありません。

よって、#N/Aというエラーが表示されます。

本来ならば、商品リストを修正してほしいところですが、難しい場合などは、VLOOKUP関数を対応させる方法があります。

それが、「ワイルドカード」を組み合わせる方法です。

ワイルドカードは、その文字を含むなど、曖昧な検索を行う場合に使う機能です。

では、VLOOKUP関数を修正していきます。

検索値を、"*"&B3&"*" と修正するだけです。

「”(ダブルコーテーション)」でワイルドカードの「*(アスタリスク)」を挟んだものを「&(アンパサンド)」で検索したいセル番地を連結してあげるだけです。

C3の数式は、
=VLOOKUP("*"&B3&"*",$F$3:$G$5,2,FALSE)

では改めて実行して確認してみましょう。

このように、単価を検索・抽出することができました。

ただ、基本的には、このような管理はデータベースとしては、どうなのかと思われます。

やはり、1レコードごとに管理したほうがいいですね。

また、主キーにあたる「商品管理番号」をつかうことで、より効率的に管理運営できますので、まずは、データベースを確認するところから、作業をしてみると、もっと効率的な方法が見つかるかもしれませんね。