表内での検索方法に、VLOOKUP関数と、MATCH関数とINDEX関数を組み合わせてする方法があります。
どっちを使ったらいいんだろうかと悩む方もいると思います。
VLOOKUP関数を使うのは、検索する列が左側で、求めたい値の列が右側にあるときに使います。
検索する列が右側で、求めたい値の列が左側の時は使えません。
では、MATCH関数とINDEX関数はどういう場合かというと、どういう場合でも使えます。
MATCH関数とINDEX関数の使い方を覚えておけば、VLOOKUP関数やHLOOKUP関数は覚えなくてもいいのですが、VLOOKUP関数の方が式が簡単なのでVLOOKUP関数を使えるときは使うといいかもしれません。
次の表を考えてみましょう。
図1
IDが5である人の名前を検索するとします。
IDは表の左はじで、名前はIDの右隣りなのでVLOOKUP関数が使えるパターンです。
式は次の図2のようになります。
図2
VLOOKUP関数の1つ目の引数は検索する値なのでH2となります。
2つ目の引数は表の範囲なのですが、表の範囲を指定する時は絶対参照にする癖をつけたほうがいいと思います。
なぜなら、表の範囲はコピペしたとしても変わってはいけない範囲だからです。
3つ目の引数は名前のある列が何番目かなので、左から2番目なので2となります。
最後の引数のFALSEは完全一致を示します。
ここまではよいでしょうか。
次は図3を見てみましょう。
図3
担当地域が練馬区の人の名前を検索します。
担当地域は左から3列目で、名前は左から2列目なので、VLOOKUP関数が使えないパターンです。
MATCH関数で担当地域が練馬区のインデックスを取得して、それをつかってINDEX関数で人の名前を取得します。
MATCH関数の引数から見ていくと、1つ目の引数は検索する値なのでH3で、2つ目の引数は検索する列範囲です。
ここでも、検索する列範囲はコピペしたとしても変わってはいけない範囲なので絶対参照にする癖をつけましょう。
最後の引数の0は完全一致を示します。
これで、練馬区のある行のインデックスが求められたので、INDEX関数では、1つ目の引数で求めたい名前のある列を指定しています。
ここもコピペしたとしても変わっては行けない範囲なので絶対参照にする癖をつけましょう。
これで求められました。