【「INDEX関数とMATCH関数を組み合わせると便利!」という話を時々聞くけど、いったいどういう事?】という疑問に答えます。

INDEX関数 & MATCH関数

 

マーク
風の噂で聞いたんだけど、「INDEX関数とMATCH関数の組み合わるとVLOOKUP関数よりも便利」らしいんだけど、それって本当?
クマリオ
うむ。確かに、VLOOKUP関数からくらべると、自転車がバイクになるくらいの違いがあるから、覚えておいて損はない。ちょっと上級技だがな。

 

【例題をみてみよう。こんな場合、どうしよう?】

「ざっくりアイス」の商品コードを求めて下さい。(INDEX関数とMATCH関数を使用すること)

2018-07-08_05h57_53

 

マーク
ん?こういうパターン、見たことあるなぁ。VLOOKUP関数でできるんじゃない?
クマリオ
予想通りの回答だな。
本当にVLOOKUPでできるかな?やってみたまえ。

 

VLOOKUP関数でやろうとすると…

>>VLOOKUP関数の基本的な使い方は、過去の記事からご覧ください。

マーク
①よーし、やってみよう。まずは「=VLOOKUP(」…と。

2018-07-08_06h05_16

 

マーク
②検索値は「ざっくりアイス」ね。

2018-07-08_06h11_54

クマリオ
③そして検索範囲は、在庫表の範囲内を指定する。

2018-07-08_06h13_14

マーク
④そして仕上げ!1列目である商品コードを知りたいから、列番号に「1」と入力しよう。最後は完全一致の「FALSE」と入れたぞう!

2018-07-08_06h14_12

 

マーク
あれ、エラーになっちゃった!?

2018-07-08_06h16_05

 

クマリオ
うむ。見事に予想していたエラーを起こしてくれてありがとう。

そう、VLOOKUPを使うと、こういう事になってしまってうまくいかないのだ。

 

なぜ、VLOOKUP関数ではできないの?

クマリオ
VLOOKUP関数は、検索値がいちばん左にあることを前提にできている。なので、左側の値を検索してから、右の値を参照するようにできているのだ。

2018-07-08_06h18_16

 

クマリオ
だが今回は、商品名(右側)を検索してから商品コード(左側)の値を参照しようとしているので、それはできない。

2018-07-08_06h18_16

 

マーク
なんだってーーー!?それじゃぁ片道しか進めない、一方通行の道路みたいじゃないか!

 

そこで、MATCH関数&INDEX関数の合わせ技を使おう!

>>INDEX関数についての説明はこちら

>>MATCH関数についての説明はこちら

①INDEX関数

クマリオ
それではまず、INDEX関数を使ってみよう。まずは検索範囲を指定する。

2018-07-08_06h26_30

 

②行番号は?

マーク
え、でも行番号はどうやって指定するの?いま「ざっくりアイス」は3行目にあるけど、いつも3行目にあるとは限らないから、関数で検索させた方がいいよね?

2018-07-08_06h28_17

 

③そこでMATCH関数を利用!

クマリオ
そう!そこでMATCH関数の出番というわけだ。MATCH関数を使って、「ざっくりアイス」が何行目にあるのかを調べる。

2018-07-08_06h33_08

 

マーク
おぉ!?INDEX関数の中でMATCH関数を使うわけだね!

 

④最後に「1」

クマリオ
そして、INDEX関数の最後の引数として「1」を入力しておく。これは、1列目(商品コード)を参照したいから、その「1」だ。

2018-07-08_06h36_45

 

⑤できた!

クマリオ
そして、確定する。

どうだ?VLOOKUP関数ではできなかったことが実現できたわけだ。

2018-07-08_06h39_17

 

マーク
本当だぁ!

VLOOKUP関数で参照できなかったデータも、INDEX関数&MATCH関数の組み合わせで参照できることがあるんだ!?

 

クマリオ
そういうわけだ。

VLOOKUP関数の使い方に慣れてきたら、その応用技として、今回のINDEX関数&MATCH関数の組み合わせ技を覚えておくといい。困ったら、この記事に戻ってくるといいかもしれない!

 

いかがでしたか?今回はここまで!

 

[本編で使った練習用のExcelファイルは、こちらでダウンロードできます。]

index_match_sample.xlsx