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