Excel。アレレ?VLOOKUP関数の弱点!このような範囲では太刀打ちできない
<VLOOKUP&INDEX+MATCH関数>
まずは、次のような表があります。
6行目から従業員リストがあるとしまして、
B3に従業員コードを入力すると、C3に従業員名が表示されるという、
見た目、ベタベタなというか、VLOOKUP関数で、
”楽勝”と思えるような表なのですが、
実は、コレ。
VLOOKUP関数の弱点というか、
6行目からの従業員リストの作り方がなっていないというか、
これでは、VLOOKUP関数で算出することが出来ないのです。
百聞は一見に如かず。
VLOOKUP関数で算出してみましょう。
まずは、B3に従業員コードSM001というダミーデータを入力して、
C3をクリックしてVLOOKUP関数ダイアログボックスを表示します。
検索値には、B3
範囲には、A7:D11
列番号は、従業員名は、範囲の左から2列目にありますので、2
検索方法は、完全一致なので、FALSE。または、0ですね。
では、OKボタンをクリックしてみましょう。
すると、結果は…#N/A
なんで!とお思いでしょうけど、このように算出できないのです。
原因は、従業員リストにあります。
VLOOKUP関数で抽出するには、
抽出する値が検索値より【右側】になければ抽出することが出来ないのです。
要するに、次のような従業員リストだったら、よかったのです。
しかし、現実的に、このような順番に出来ない場合はどうしたらいいのでしょうか?
そこで登場するのが、
MATCH関数で検索値を見つけてINDEX関数で抽出する、
INDEX+MATCH関数のコンビネーションなのです。
まず、MATCH関数の動きを確認したほうがわかりやすいので、
D3にMATCH関数を作ってみましょう。
D3をクリックして、MATCH関数ダイアログボックスを表示します。
検索値には、B3
検査範囲には、D7:D11
照合の種類には、完全一致なので、0
そして、OKボタンをクリックしましょう。
このMATCH関数を使うと、リストの何番目にデータがあるのかがわかるようになります。
D3の数式は、
=MATCH(B3,D7:D11,0)
この算出された数値をINDEX関数で使って、抽出しようというわけです。
では、C3をクリックして、INDEX関数ダイアログボックスを表示しましょう。
INDEX関数は、2通りの引数を持つ特殊な関数ですが、
今回は行番号があればいいので、どちらでもOKなので、
配列.行番号.列番号を選んでOKボタンをクリックします。
配列には、B7:B11
行番号には、先程MATCH関数で算出したD3を使います。
OKボタンをクリックします。
C3の数式は、
=INDEX(B7:B11,D3)
これで、抽出することが出来ましたね。
このように、VLOOKUP関数の弱点というか、
範囲の表の作りによっては、VLOOKUP関数が使えないケースがありますので、
INDEX+MATCH関数を覚えておくといいかもしれませんね。
なお、C3の数式を、