はじめに
「VLOOKUPではうまく検索できない……」「左側のデータを取り出したいのにできない……」そんな経験はありませんか?
そんなときに役立つのが、Excelの強力な組み合わせ関数「INDEX・MATCH(インデックス・マッチ)」です。
VLOOKUPの限界を超えてより柔軟に検索・参照ができる「INDEX・MATCH」の基本を、初心者にもわかりやすく解説します。
▶ VLOOKUPの使い方を知りたい方は、こちらの記事もご覧ください:
INDEX関数とMATCH関数の基本
「INDEX・MATCH」は、2つの関数を組み合わせて使う方法です。
それぞれの役割を簡単に紹介します。
INDEX関数とは?
指定した行・列の交差するセルの値を返す関数です。
=INDEX(範囲, 行番号, [列番号])
- 範囲:参照する表や列
- 行番号:何行目の値を取得するか
- 列番号:何列目の値を取得するか(省略可)
🔗 Microsoft公式:INDEX関数の解説
MATCH関数とは?
検索値が範囲の中で何番目にあるか(=相対位置)を返す関数です。
=MATCH(検索値, 検索範囲, 一致の種類)
- 検索値:探したい値
- 検索範囲:探す対象となる列
- 一致の種類:通常は”0″(完全一致)を使います
🔗 Microsoft公式:MATCH関数の解説
🔍 一致の種類の違い
種類 | 意味 | 備考 |
---|---|---|
0 | 完全一致 | 最も一般的。順不同OK |
1 | 以下の最大値 | 検索範囲は昇順で並んでいる必要あり |
-1 | 以上の最小値 | 検索範囲は降順で並んでいる必要あり |
INDEX MATCHの組み合わせで検索する方法
INDEXとMATCHを組み合わせることで、VLOOKUPではできなかったことが可能になります。
基本構文
=INDEX(戻り値の範囲, MATCH(検索値, 検索範囲, 0))
例:名前から点数を取り出す
次のような表があったとします:
A列(名前) | B列(点数) |
---|---|
田中 | 80点 |
佐藤 | 90点 |
鈴木 | 85点 |
検索値がD3セルに入っている場合:
=INDEX(B2:B4, MATCH(D3, A2:A4, 0))
→ D3が”佐藤”なら “90点” を返します。

INDEX・MATCHのメリットまとめ
機能 | VLOOKUP | INDEX MATCH |
---|---|---|
左の列の値を取得 | ❌ 不可 | ✅ 可能 |
列の追加・削除に強い | ❌ 弱い | ✅ 強い |
可読性・保守性 | △ | ◎(動的な列参照) |
横方向検索(MATCH+INDEX) | ❌ | ✅ |
なぜ柔軟?
- MATCHで検索対象の位置を動的に取得できます
- INDEXで取り出す範囲を自由に指定できます
- 複数条件検索などの応用にも対応できます
複数条件検索の例(AND条件)
「名前が佐藤 かつ 点数が90点の行を検索」のような複数条件での検索には配列数式やFILTER関数との組み合わせが必要です。
=INDEX(点数範囲, MATCH(1, (名前範囲="佐藤")*(点数範囲="90点"), 0))
※Ctrl + Shift + Enterで配列数式として入力(古いExcelの場合)

▶ 複数条件検索の方法についてはこちらの記事をご覧ください
INDEX・MATCHができないときの原因と対処法
#N/Aエラーが出る
- 検索値が表に存在しない
- 検索値にスペースが入っている(特に全角/半角)
結果がズレる・意図した値と違う
- INDEXとMATCHの範囲がズレている
- MATCHの”0″(完全一致)を忘れている
対処法
- 範囲の整合性を必ずチェックしましょう
- MATCH関数には必ず”0″(完全一致)を指定 しましょう
- セルをコピーする際に相対参照/絶対参照の使い分けにも注意しましょう。
VLOOKUPとの違いを比較表で整理
特徴 | VLOOKUP | INDEX MATCH |
---|---|---|
左側の列を検索 | ❌ | ✅ |
柔軟な構文 | △ | ◎ |
表の構造変更耐性 | 弱い | 強い |
複数条件の応用 | 難しい | 可能 |
XLOOKUPという便利な関数もある
実は、VLOOKUPとINDEX MATCHのいいとこ取りをした「XLOOKUP」という関数も登場しています。
- 列番号の指定が不要
- 左右両方向に検索可能
- エラー処理も内蔵
※XLOOKUPはExcel 365またはExcel 2021以降のバージョンで使用できます。
▶ XLOOKUP関数の詳しい解説はこちら👇
まとめ
INDEX関数とMATCH関数を使えば、VLOOKUPの制限を超えた柔軟な検索が可能になります。
「列の順番に依存しない検索」「左側の値の取得」「構造変更に強い式」を作るなら、ぜひ覚えておきたい関数です。
さらにステップアップしたい方は、XLOOKUPも検討してみましょう。