Excelのデータ検索で定番のVLOOKUP関数に物足りなさを感じたことはありませんか?
そんなときに強力な解決策となるのが INDEX関数とMATCH関数の組み合わせ です。柔軟性が高く、複雑な検索にも対応できるため、上級者にも愛用されています。
この記事では、INDEX+MATCH関数の使い方と実用例をわかりやすく紹介します。
INDEX関数とMATCH関数の基本
INDEX関数とは?
指定した範囲から、行番号・列番号に対応するセルの値を返す関数
=INDEX(範囲, 行番号, [列番号])
関連記事:INDEX関数の使い方
MATCH関数とは?
指定した値が、範囲の中で何番目にあるか(位置)を返す関数
=MATCH(検索値, 検索範囲, [照合の型])
関連記事:MATCH関数の使い方
INDEX + MATCH関数の基本構文
=INDEX(取得したい範囲, MATCH(検索値, 検索範囲, 0))
INDEX + MATCH関数の使い方
例:名前に対応する点数を検索
テスト結果の一覧から「鈴木さんの点数」をINDEX + MATCH関数を使って取り出してみましょう。

① MATCH関数で「位置を見つける」
MATCH関数は、検索値(= 鈴木)が、B3:B5の中で何番目にあるかを探します。
=MATCH(E3,B3:B5,0)
MATCH関数の最後の「0」は「完全一致」を意味します。
部分一致ではなく、「鈴木」とぴったり一致するデータを探すときに使います。

B列が「B3:佐藤 B4:鈴木 B5:高橋 」の場合、「鈴木」は2番目にあるため、
MATCH関数の結果は「2」 になります。
② INDEX関数で「その位置の値を取り出す」
MATCH関数の結果から、「鈴木」が2番目にあることが分かっているので、
次にINDEX関数を使って、C3:C5の中から2番目の値(=鈴木さんの点数)を取り出します。
=INDEX(C3:C5,2)
この式では、範囲 C3:C5 の中の 2番目の値 が返されます。

C列が「C3:80 C4:90 C5:85 」の場合、INDEX関数の結果は「90」 になります。
③ INDEX関数とMATCH関数を組み合わせる
2つの関数を組み合わせると、INDEX+MATCH関数の完成です。
=INDEX(C3:C5,MATCH(E3,B3:B5,0))

検索値に「鈴木」と入力すると、MATCH関数がB列で「鈴木」の位置を見つけ、
INDEX関数がC列の2番目の値(=90点)を返します。
結果:90(鈴木さんの点数)
MATCH関数が「探す」、INDEX関数が「取りに行く」。
この関係を覚えておけば、INDEX + MATCH関数を自在に使いこなせます。
注意点
- MATCHの照合型は「0(完全一致)」が基本
- INDEXの行・列番号は検索範囲内の位置として指定する
- 検索値が見つからない場合は
#N/Aエラーが返る
関連関数
| 関数名 | 説明 |
|---|---|
| VLOOKUP関数 | 表の左端列から検索して対応する値を取得する |
| XLOOKUP関数 | 行や列を指定せず柔軟に検索できる新しい検索関数 |
| MATCH関数 | 指定した値の位置(行番号・列番号)を取得する |
| INDEX関数 | 指定した位置の値を取得する |
まとめ
INDEX+MATCH関数の組み合わせは、VLOOKUPよりも柔軟で堅牢な検索手段です。表の構造が変更されても壊れにくく、横方向や2軸の検索にも対応可能。検索を極めたいなら、INDEX+MATCHの習得は避けて通れません! XLOOKUP関数への理解にもつながるので、ぜひ実務で使ってみましょう。
関連記事:VLOOKUP関数の使い方
関連記事:XLOOKUP関数の使い方

