[Excel] VLOOKUPよりINDEX・MATCHを使おう!

ビジネスマン&ウーマンのみなさま、今日も元気にExcel使っていますか?

日本企業におけるExcelのマストっぷりはなんなんでしょうね。なんでもかんでもExcel。データ管理は本領としても、ちょっとした申請書や文書もExcel。方眼紙Excel。ちょくちょく出現するExcel職人。

かくいう私もExcelどっぷりなビジネスライフを送っているわけですが。なんだかなあと思いつつ、それでも日々Excel職人を極めていたりするわけです。

で、VLOOKUP関数ってあるじゃないですか。なんらかのキーを基に紐付いたデータを拾ってくるアレ。

同じような動きを、VLOOKUPより柔軟に実現してくれる関数があるんですよ。それがINDEX関数とMATCH関数の組み合わせ。

私的にはどちゃくそ便利なんですけど、前職でも現職でも使ってる人がすんごく少ない。ので、INDEX・MATCHの布教をしようと思います。

JP_Office2016Launch_468x60


スポンサーリンク

1. VLOOKUP関数のおさらい

まずはVLOOKUP関数について。

下のような2つの表があったとしましょう。左表の「品目」を変更すると、右表から単価を探してきてくれます。

indexmatch_01

indexmatch_02

これがVLOOKUP関数の基本的な動作ですね。ちなみに、式は以下の通りです。

indexmatch_03

VLOOKUP([検索したい値],[検索範囲],[拾ってきたい列(検索範囲内での列)],検索方法(FALSEは完全一致))

2. INDEX関数の仕組み

INDEX関数は、指定した範囲の行・列を指定して、特定セルの値を取ってくる関数です。

行と列を直接数値で指定し、先程のVLOOKUPと似た動きをさせたサンプルが以下の通り。

indexmatch_04

INDEX([検索範囲],[拾ってきたい行],[拾ってきたい列])

とはいえ、これだと「品目」を変えても値は変わらないので、役立たずです。そこでMATCH関数と組み合わせて使います。


スポンサーリンク

3. MATCH関数の仕組み

MATCH関数は、ある値が指定した範囲の何番目にあるかを教えてくれます。返ってくるのは「何番目」という数値です。

indexmatch_05

MATCH([検索したい値],[検索範囲],[検索方法(0は完全一致)])

このときに気をつけたいのが、MATCH関数が返すのは「何行目」や「何列目」ではないということです。あくまで「指定範囲の中で何番目のセルか」です。そのため、何行目かを知りたければ範囲の指定を1行に、何列目かを知りたければ範囲の指定を1列にしてやる必要があります。

4. INDEX関数とMATCH関数を組み合わせる

「指定範囲の中でx行目、y列目の値」を返してくれるINDEX関数と、「指定した値は指定した範囲のz番目にある」を返してくれるMATCH関数。組み合わせてVLOOKUPと同じ動きをさせると、以下のようになります。

indexmatch_06

はい。では、私がVLOOPUP関数よりINDEX関数&MATCH関数の組み合わせを多用する理由を以下延べていきたいと思います。

5. INDEX関数とMATCH関数のタッグが強力な理由

5-1. 左端でなくともキー列にできる

これがINDEX&MATCHをオススメする最大の理由です。

キー列が値を引っ張りたい列より常に左側にあるとは限らないのがこの世の無常。そんなとき、VLOOKUPは使えないんですね。

INDEX&MATCHなら、キー列より左側の値を引っ張れます。これだけで価値が高すぎます。

5-2.行列両方のマッチングができる

列数の値にもMATCH関数を入れてやると、行列両方のマッチングが可能です。

例えば下記の表。え?なんの表かって?とある同人誌印刷所の料金表です言わせんな///

indexmatch_07

とはいえ、これはVLOOKUP関数でも可能です。第3引数に列方向のMATCH関数を突っ込んでやればOK。なのでこの点はイーブンでしょうか。

5-3.軽い(たぶん)

これは、感覚的なものと、なんかどこかでVLOOKUP関数の方が重いって読んだことある(キリッ

とはいえINDEX&MATCHでも多用しすぎると普通に重くなるので、ご利用は計画的に、です。

それでは皆様、Have a nice Excel Days!

この投稿の投稿者は おさみ です。ブックマーク用 パーマリンク

スポンサーリンク