Excelで条件に一致するデータを抽出したい時、多くの人がVLOOKUP関数を使っているのではないでしょうか?
VLOOKUP関数は、
- 商品コードから商品名を検索する
- 社員IDから氏名を取得する
- カテゴリ別の売上データを参照する
など便利に活用できますが、「左側にあるデータを検索できない」「列を挿入すると参照がズレる」といった制約があります。
そこで役立つのが、INDEX関数とMATCH関数の組み合わせです。
この2つを組み合わせることで、VLOOKUP関数ではできない柔軟な検索が可能になります。
本記事では、INDEX関数・MATCH関数の基本構造と、VLOOKUP関数との違いを解説します。

この記事のゴール
- INDEX関数・MATCH関数の概要がわかる
- INDEX+MATCH関数でVLOOKUP関数の代用ができる
- INDEX+MATCH関数とVLOOKUP関数の違いがわかる
INDEX関数、MATCH関数の構造を理解しよう

はじめに、INDEX関数、MATCH関数それぞれの基本構造を理解しましょう。
INDEX関数とは?
INDEX関数は、指定した範囲から「行」と「列」の位置を指定して値を取得する関数です。
構文
INDEX関数の構造は下記の通りで、指定した範囲内の、指定した行・列のセルを出力してくれます。
=INDEX(範囲, 行番号, [列番号])
範囲 : | 参照するセル範囲や配列を指定します。 |
行番号 : | 取得するデータがある行の番号を指定します。 |
[列番号]: | (省略可)取得するデータがある列の番号を指定します。 省略すると1列目が選択されます。 |
例:商品台帳全体から「4行目の価格」を取得する

MATCH関数とは?
指定した値が、範囲内の何番目にあるかを取得する関数です。
構文
=MATCH(検索値, 検索範囲, [照合の種類])
検索値 : | 検索する値を指定します。 |
検索範囲 : | 検索対象となるセル範囲を指定します。 |
[照合の種類]: | (省略可)一致の方法を指定します。省略した場合は-1となります。 -1:検索値以上の最小値を探す(検索範囲は降順に並べておく)。 1:検索値以下の最大値を探す(検索範囲は昇順に並べておく)。 0:検索値と完全一致する値を探す。 |
例:検索範囲から、「キーボード」がある場所を取得する

INDEX+MATCH関数の仕組み
VLOOKUP関数のおさらい

INDEX+MATCH関数について説明する前に、VLOOKUP関数の構文について簡単におさらいしておきましょう。
=VLOOKUP(検索値, 範囲, 列番号、[検索方法])
検索値 : | 検索する値を指定します。 |
範囲 : | 検索対象となるセルの範囲を指定します。 |
列番号 : | 取得したいデータがある列の番号を指定します。 |
[検索方法]: | (省略可)一致の方法を指定します。省略した場合は0となります。 1:近似一致 0:完全一致 |
INDEX+MATCH関数の構造
INDEX関数とMATCH関数を組み合わせることで、VLOOKUP関数と同じようにデータを検索できるようになります。
例:「キーボード」の価格を取得する
=INDEX(D2:D6,MATCH(“キーボード”,B2:B6,0))

VLOOKUP関数との違い
① 関数が長くなり、何を示しているかわかりづらい
INDEX+MATCH関数は自由度が高いですが、構造が複雑になりやすいのがデメリットです。
例:INDEX MATCHとVLOOKUPでキーボードの価格を抽出した場合


どれが何を指しているんだ?
しかし、一度理解すれば、VLOOKUP関数の制約を克服できるメリットが大きいです!
② 先頭列でなくても検索できる
VLOOKUP関数は「検索範囲の最左列」しか検索できませんが、
INDEX+MATCHなら、どの列からでもデータを検索できます。
③ 複数の条件を満たすデータの検索ができる
VLOOKUP関数では「1つの条件」しか指定できませんが、INDEX+MATCH関数は「複数の条件を満たすデータ検索」が可能です。
例:カテゴリと商品名の両方を満たす商品コードを取得
=INDEX(B2:B6,MATCH(1,(C2:C6=”家電”)*(D2:D6=8000),0))

まとめ
INDEX+MATCH関数を使えば、VLOOKUP関数の制約を克服し、柔軟なデータ検索が可能になります!
- VLOOKUP関数より自由度が高い!
- どの列でも検索できる!
- 複数条件を指定できる!

「VLOOKUP関数では対応できない」と感じたら、INDEX+MATCH関数を活用して、より効率的なデータ検索を実現しましょう!