INDEX+MATCH関数とは?VLOOKUPより便利な使い方を解説

Excel関数・機能

✅ 自分のPCで動作確認済

この記事の手順・数式は、すべて運営者(じむ)自身のPCで実際に動かしてから掲載しています。
検証環境:Windows 11 Home / Microsoft 365(Excel 2024)/ 解像度 1920×1080

VLOOKUPを使いこなしている方に
ぜひ覚えてほしい関数があります。

それがINDEX+MATCHの組み合わせです。

「VLOOKUPで十分では?」と思うかもしれませんが
INDEX+MATCHにはVLOOKUPにはない
大きなメリットがあります。

この記事を読めばVLOOKUPから
INDEX+MATCHに乗り換えられるようになります。

VLOOKUPの弱点とは?

VLOOKUPには実は3つの弱点があります。

弱点 具体的な問題
左側を検索できない 検索列より左にあるデータを取得できない
列の挿入に弱い 列を追加すると列番号がずれてエラーになる
処理が遅い データが多いとファイルが重くなりやすい

INDEX+MATCHならこの3つの弱点がすべて解消されます。

VLOOKUPで限界を感じたら、次に覚えるのがこの組み合わせです。私はこれで複雑な検索が一気に楽になりました。

INDEX関数とMATCH関数をそれぞれ理解する

INDEX+MATCHは2つの関数を組み合わせて使います。
まずそれぞれの役割を説明します。

MATCH関数:「何番目にあるか」を調べる

MATCH関数は指定した値が
リストの中で何番目にあるかを返します。

【書き方】
=MATCH(探したい値, 探す範囲, 0)

【例】
A列に「東京・大阪・名古屋」と入っているとき
=MATCH(“大阪”, A1:A3, 0)
→ 結果は「2」(2番目にある)

最後の「0」は完全一致で探すという意味です。
いつも「0」と書いてください。

INDEX関数:「何番目のデータ」を取り出す

INDEX関数は指定した範囲から
何番目のデータかを指定して取り出します。

【書き方】
=INDEX(取り出したい範囲, 行番号)

【例】
B列に「100・200・300」と入っているとき
=INDEX(B1:B3, 2)
→ 結果は「200」(2番目のデータ)

INDEX+MATCHを組み合わせる

MATCH関数で「何番目か」を調べてその番号をINDEX関数に渡す。
これがINDEX+MATCHの仕組みです。

ステップ やっていること 結果
MATCH関数で「大阪」が何番目にあるか調べる 2番目
INDEX関数でB列の2番目のデータを取り出す 200

数式にするとこうなります。

=INDEX(B1:B3, MATCH(“大阪”, A1:A3, 0))

「A列から大阪を探して、同じ行のB列の値を取り出す」
という意味です。VLOOKUPと同じ結果になります。

実際のデータで使ってみよう

以下のデータでINDEX+MATCHを使います。

A列(社員番号) B列(氏名) C列(部署) D列(売上)
001 山田太郎 総務部 500,000
002 鈴木花子 経理部 380,000
003 田中一郎 営業部 620,000

例1:社員番号から氏名を取得する

=INDEX(B1:B3, MATCH(“002”, A1:A3, 0))

結果:鈴木花子

VLOOKUPでも同じことができますが
次の例がINDEX+MATCHの真価を発揮する場面です。

例2:氏名から社員番号を取得する(左方向の検索)

=INDEX(A1:A3, MATCH(“田中一郎”, B1:B3, 0))

結果:003

VLOOKUPでは検索列より左にあるデータは
取得できませんでしたが
INDEX+MATCHなら問題なく取得できます。

これがINDEX+MATCHの最大のメリットです。

VLOOKUPとINDEX+MATCHの比較まとめ

VLOOKUP INDEX+MATCH
検索方向 右方向のみ 左右どちらも可能
列の挿入 列番号がずれる 影響を受けない
処理速度 データが多いと遅い VLOOKUPより速い
数式の読みやすさ シンプル やや長い
おすすめ度 初心者向け 中級者以上におすすめ

いきなり全部を切り替えなくてOK

「今までVLOOKUPで作った表を
全部書き換えないといけないの?」

その必要はありません。

今動いている数式はそのままで大丈夫です。
新しく数式を作るときから
INDEX+MATCHを使い始めてみてください。

特に「検索列より左のデータを取りたい」
という場面が出てきたら
INDEX+MATCHの出番です。

まとめ

INDEX+MATCHはVLOOKUPの弱点を
すべて解消してくれる組み合わせです。

・MATCH関数:何番目にあるか調べる
・INDEX関数:何番目のデータを取り出す
・左方向の検索ができる
・列の挿入に影響されない
・VLOOKUPより処理が速い

VLOOKUPに慣れてきた方は
ぜひINDEX+MATCHを使ってみてください。
一度覚えればこちらの方が便利です。

コメント

タイトルとURLをコピーしました