Excelのデータ検索で定番のVLOOKUP関数に物足りなさを感じたことはありませんか?
そんなときに強力な解決策となるのが INDEX関数とMATCH関数の組み合わせ です。柔軟性が高く、複雑な検索にも対応できるため、上級者にも愛用されています。
この記事では、INDEX+MATCH関数の使い方と実用例をわかりやすく紹介します。
INDEX関数とMATCH関数の基本
INDEX関数とは?
指定した範囲から、行番号・列番号に対応するセルの値を返す関数
=INDEX(範囲, 行番号, [列番号])
MATCH関数とは?
指定した値が、範囲の中で何番目にあるか(位置)を返す関数
=MATCH(検索値, 検索範囲, [照合の型])
INDEX + MATCH の基本構文
=INDEX(取得したい範囲, MATCH(検索値, 検索範囲, 0))
例:氏名に対応する点数を検索
A列(名前) | B列(点数) |
---|---|
佐藤 | 80 |
鈴木 | 90 |
高橋 | 85 |
=INDEX(B2:B4, MATCH("鈴木", A2:A4, 0)) → 90
→ A列から「鈴木」が何行目かをMATCHで探し、B列のその行の値をINDEXで返す
INDEX+MATCHの強み
特徴 | 説明 |
柔軟な列選択 | 検索対象が左にあってもOK(VLOOKUPは左端限定) |
列の追加に強い | 列番号ではなく列参照なので、構造変更に強い |
並び順に依存しない | データがソートされていなくても問題なし |
垂直・水平の両方に対応 | MATCHの検索範囲を列方向にすれば行方向検索も可能 |
横方向の検索例
例:科目名から点数を取得
A列 | B列 | C列 | |
1行目 | 国語 | 数学 | 英語 |
2行目 | 80 | 90 | 70 |
=INDEX(A2:C2, MATCH("数学", A1:C1, 0)) → 90
応用:2軸検索(行+列)
例:クロス表から得点を取得
A列 | B列 | C列 | |
1行目 | 国語 | 数学 | |
2行目 | 鈴木 | 80 | 90 |
3行目 | 高橋 | 70 | 95 |
=INDEX(B2:C3, MATCH("高橋", A2:A3, 0), MATCH("数学", B1:C1, 0)) → 95
注意点
- MATCHの照合型は「0(完全一致)」が基本
- INDEXの行・列番号は検索範囲内の位置として指定する
- 検索値が見つからない場合は
#N/A
エラーが返る
まとめ
INDEX+MATCH関数の組み合わせは、VLOOKUPよりも柔軟で堅牢な検索手段です。表の構造が変更されても壊れにくく、横方向や2軸の検索にも対応可能。検索を極めたいなら、INDEX+MATCHの習得は避けて通れません! XLOOKUP関数への理解にもつながるので、ぜひ実務で使ってみましょう。