INDEX・MATCH関数の使い方とVLOOKUPとの違い|柔軟な検索をやさしく解説!

Excelでよく使われる検索関数といえば「VLOOKUP」が有名ですが、
実務で「列の順番が変わった」「左側にある値を取り出したい」といった場面では、VLOOKUPでは対応できない制約に悩むこともあります。

そんなときに便利なのが、「INDEX関数」と「MATCH関数」の組み合わせです。
一見すると少し難しく感じるかもしれませんが、仕組みを理解すれば、VLOOKUPよりも柔軟にデータを検索・取得できる非常に強力な組み合わせです。

本記事では、INDEX関数とMATCH関数の基本的な使い方から、VLOOKUPとの違いや使い分けのポイントまで、やさしく丁寧に解説します。

VLOOKUP関数については以下の記事にて詳しく紹介しています。
初めてのVLOOKUP関数|よくあるエラー・複数条件・部分一致の対処法をやさしく解説!

INDEX・MATCH関数とは?まずは基本の使い方から

INDEX関数とMATCH関数は、それぞれ単独でも使える関数ですが、組み合わせることで柔軟な検索処理が可能になるのが大きな特徴です。
ここでは、まずそれぞれの基本的な働きを確認しておきましょう。


INDEX関数の役割|指定した行・列の値を取り出す

INDEX関数は、指定した範囲の中から「○行目、○列目にある値を返す」という関数です。

■ 基本構文:

=INDEX(範囲, 行番号, [列番号])

■ 例:

A列 B列
りんご 100円
みかん 120円
バナナ 150円
=INDEX(B1:B3, 2)

→ 「B列の2行目」= 120円 が返されます。


MATCH関数の役割|値が何番目にあるかを検索

MATCH関数は、「検索値が、指定した範囲の中で何番目にあるか」を返してくれます。

■ 基本構文:

=MATCH(検索値, 検索範囲, 0)

※検索の型は「0(完全一致)」がおすすめです。

■ 例:

=MATCH("バナナ", A1:A3, 0)

→ 「バナナ」はA列の3行目なので、3 が返されます。


INDEX+MATCHの組み合わせで柔軟な検索が可能に!

MATCH関数で「検索値が何行目にあるか」を求め、それをINDEX関数の「行番号」として使えば、検索+値の取り出しを連動して行うことができます。

■ 組み合わせ例:

=INDEX(B1:B3, MATCH("バナナ", A1:A3, 0))
  • 「A列からバナナを探す」→ 3行目とわかる

  • 「B列の3行目の値」→ 150円を取得

VLOOKUPのような検索処理が実現できますが、より柔軟に構成できるのが魅力です。

VLOOKUPとの違いと、INDEX・MATCHが優れている点

VLOOKUP関数は「左から右に検索して、指定した列の値を返す」という仕組みですが、いくつかの制約があります
INDEX・MATCH関数はその弱点を補い、より柔軟な検索処理が可能になります。


検索方向の自由度が高い(左方向の検索も可能)

VLOOKUPでは「検索列が表の一番左側」にある必要があります。
一方、INDEX・MATCHの組み合わせなら、検索列が右にあっても左のデータを取得可能です。

■ 例:

商品名 商品コード
ペン A001
ノート A002
  • 「商品名(左側)」から「商品コード(右側)」を取得 → VLOOKUPはOK

  • 「商品コード(右側)」から「商品名(左側)」を取得 → VLOOKUPでは不可

  • INDEX・MATCHならどちらの方向でも対応できます。


列番号を指定しないため、構造変更に強い

VLOOKUPは「左から○列目」と位置で指定するため、列を追加・削除すると式が壊れやすいです。

INDEX・MATCHでは「列そのもの」を指定するので、構造が変わっても壊れにくいのが大きなメリットです。

※A列とB列の間に新しい列を挿入していますが、INDEX・MATCH関数は参照範囲が自動で調整されているため、計算結果も問題なく表示されています。
このように、列の追加や構造の変更に強いのがINDEX・MATCHの大きなメリットです。
VLOOKUPのように「列番号がずれてエラーになる」リスクがないため、長期的に使うシートでは特に安心です。


複数条件での検索にも応用しやすい

MATCH関数の中に複数の条件を入れれば、**VLOOKUPでは対応しにくい「複数条件検索」**も可能になります。

※複数条件で検索する場合、以下のように MATCH(1, 条件1 * 条件2, 0) という掛け算形式が基本ですが、文字列として結合し MATCH("りんご110", 商品列&価格列, 0) のように指定する方法もあります。
条件が少ない場合は結合方式もわかりやすいですが、型の違いに注意が必要です。

=MATCH(1, (条件1列=値1)*(条件2列=値2), 0)

(※配列数式として扱うか、スピル対応環境が必要)


テーブル・動的範囲との相性が良い

INDEX・MATCHは構造が柔軟なので、「テーブル機能」や「名前付き範囲」「INDIRECT関数」との組み合わせもしやすく、再利用性の高い検索ロジックが作れます。

VLOOKUPとINDEX・MATCHの使い分けポイント

VLOOKUPとINDEX・MATCHにはそれぞれメリットと向き・不向きがあります。
使い方や目的に応じて使い分けることで、壊れにくく、見やすいExcelシートが作れるようになります。


初心者向け・すぐに使えるならVLOOKUP

VLOOKUPは構文が一行で済むため、初心者でも感覚的に扱いやすいのが特長です。

=VLOOKUP(検索値, 範囲, 列番号, FALSE)
  • 商品コードを入力したら、対応する商品名や単価が表示される

  • 社員番号から氏名を取得するマスタ参照にもよく使われます

→ まずはVLOOKUPで慣れてから、より柔軟性が必要になったらINDEX・MATCHに切り替えるのもおすすめです。

 


構造が変わる可能性があるならINDEX・MATCH

マスタ表やデータ表が今後増減したり、列の追加が発生する可能性がある場合は、INDEX・MATCHで作っておくと安心です。

  • 列を追加しても壊れない

  • 左方向の検索にも対応できる

  • 関数の再利用やカスタマイズがしやすい

→ 長期的に運用するファイルには特に向いています。


帳票や実務テンプレートでも差が出る

納品書や見積書など、帳票テンプレートを整備する場面でも、VLOOKUPとINDEX・MATCHの使い分けは重要です。

  • 列の順番が決まっている・固定で使う → VLOOKUPで簡潔に

  • 列の入れ替えや拡張が予想される → INDEX・MATCHで安全に


FILTERやXLOOKUPとの比較も検討

最新バージョン(Excel 365/2021)をお使いなら、FILTER関数XLOOKUP関数も選択肢になります。

それぞれの違いについても別記事で詳しく紹介していますので、興味のある方はぜひご覧ください。

Excel FILTER関数の使い方まとめ|複数条件・別シート・使えない時の対処法も解説!【事務作業がグッと楽に】

XLOOKUP関数の使い方まとめ|対応バージョン・エラー対策・複数条件検索もやさしく解説!

まとめ|使い分けができればExcel操作が一段レベルアップ!

INDEX関数とMATCH関数は、一見するとVLOOKUPよりも複雑に感じるかもしれません。
しかし、構造を理解すれば、より柔軟で壊れにくい検索処理ができる非常に便利な関数です。


本記事のまとめ

  • INDEX関数は「行番号・列番号」を指定してデータを取り出す関数

  • MATCH関数は「検索値が何番目にあるか」を求める関数

  • 2つを組み合わせることで、検索方向が自由で、構造変更に強い検索が可能

  • VLOOKUPは簡単・手軽だが、構造が変わると壊れやすい

  • 目的や運用の長さに応じて、VLOOKUPとINDEX・MATCHを使い分けるのがベスト!


補足:応用に興味がある方へ

  • 複数条件での検索

  • 左側のデータ取得

  • 表の自動展開や連携処理
    といった操作に取り組みたい方は、INDEX・MATCHを使えるようになると一気に世界が広がります。


関連記事もチェック!