VLOOKUPとINDEX+MATCH関数の違いを図解で解説。列番号を動的にする方法・左方向の検索・複数条件など、VLOOKUPの限界をINDEX+MATCHで突破する実務テクニックを紹介します。
目次
この記事でわかること
- VLOOKUPとINDEX+MATCHの違いと使い分け基準
- INDEX+MATCHの基本構文の読み方
- 左方向の検索・列の追加削除に強い数式の作り方
- MATCHで列番号を動的に切り替えるテクニック
- VLOOKUP・INDEX+MATCH・XLOOKUPの3関数の使い分け方針
VLOOKUPの「これが限界だ」と感じる瞬間
VLOOKUPを使い込んでいくと、必ずどこかで壁に当たります。
- マスタの左にある列を取得しようとしたら、できなかった
- マスタに列を1本挿入したら、全部の数式の列番号がズレてエラーになった
- 取得したい列が多くて、VLOOKUP(&列番号)を何十本も書くはめになった
こういった経験が積み重なったとき、初めて「もっといい方法があるはずだ」と感じるはず。そのときの選択肢が INDEX+MATCH です。
VLOOKUPとINDEX+MATCHの違いを1分で理解する
| 比較項目 | VLOOKUP | INDEX+MATCH |
| 左方向の検索 | ❌ できない | ✅ できる |
| 列番号の指定 | 手動で数える必要あり | MATCHで自動化できる |
| 列の追加・削除 | 列番号がズレてエラーになる | ズレない |
| 複数条件 | 作業列が必要 | &で対応可能 |
| 数式の複雑さ | シンプル | やや複雑 |
| 対応バージョン | すべて | すべて |
どちらを使うか迷ったら(※)
- シンプルな右方向検索 → VLOOKUP
- 左方向・列番号を動的にしたい → INDEX+MATCH
- どちらの機能も使いたい・シンプルに書きたい → XLOOKUP(Microsoft 365・Excel 2021以降)
(※出典:Microsoft サポート「VLOOKUP、INDEX、またはMATCHを使って値を検索する」)
⇩ XLOOKUP関数の詳しい解説はこちら ⇩
【脱VLOOKUP】XLOOKUP関数の使い方を解説!列数え不要・エラー処理もこれ1本で完結
この記事でわかること XLOOKUPの基本の使い方(コピペOKの数式付き) 受注管理表を使った実務シミュレーション #N/Aエラーをなくす方法 スピル・複数条件…
INDEX+MATCHの基本構文
まずそれぞれの関数を個別に理解しましょう。
MATCH関数:値が何行目(何列目)にあるかを返す(※1)
=MATCH(検索値, 検索範囲, 0)
- 検索値:探したい値
- 検索範囲:検索する1列(または1行)
- 0:完全一致(通常は0を指定)
INDEX関数:指定した行・列の値を返す(※2)
=INDEX(返す範囲, 行番号)
組み合わせると:「マスタの何行目か」をMATCHで求め、その行の値をINDEXで取り出す
=INDEX(戻り範囲, MATCH(検索値, 検索範囲, 0))
「MATCHで住所を調べて、INDEXでその部屋のものを取り出す」そんなイメージです。
(※1 出典:Microsoft サポート「MATCH 関数」)
(※2 出典:Microsoft サポート「INDEX 関数」)
【実務図解】INDEX+MATCHで商品データを取得する
VLOOKUPと同じ「商品IDから商品名を取得する」操作をINDEX+MATCHで実現します。
| 商品マスタ | |||
| 商品ID | 商品名 | 単価 | メーカー |
| A001 | ノートPC | 98,000 | 〇〇社 |
| A003 | ワイヤレスマウス | 3,500 | △△社 |
=INDEX(G:G, MATCH(C3, F:F, 0))
- MATCH(C3, F:F, 0):F列の中でC3(商品ID)が何行目にあるかを返す
- INDEX(G:G, …):G列(商品名)のその行の値を返す

VLOOKUPに比べると式が長く見えますが、「どの列から返すか」を列番号の数字ではなく「G列」と直接指定している点が違います。マスタに列を追加しても、G列を取得するという指定は変わらないため式が壊れません。
INDEX+MATCHが必要な3つのシーン
シーン①:検索値より左のデータを取得したい
VLOOKUPは「検索列より右のデータしか返せない」制約があります。INDEX+MATCHにはその制約がなく、どの方向でも取得できます。
例:商品名(C列)から商品ID(A列)を逆引きする
=INDEX(A:A, MATCH(E3, C:C, 0))
検索列(C列)の左にある商品ID(A列)も問題なく取得できます。
シーン②:列の追加・削除に強い数式を作りたい
VLOOKUPは「3列目」のように絶対的な列番号を指定するため、列の挿入・削除で番号がズレるとエラーになります。INDEX+MATCHは「G列の値を返す」と列で直接指定するため、構成変更に強いです。
複数人で管理するファイルや、マスタの構成が変わりやすい環境では特に効果を発揮します。
シーン③:列番号をヘッダー名で動的に指定したい
VLOOKUPの列番号を「3」と固定するのではなく、ヘッダー名(例:「単価」)から自動で列番号を特定できます。(詳細は次章)
列番号をMATCHで動的にする方法
「どの列を取得するかをセルで切り替えたい」場合に使えるテクニックです。
例:G1セルに「商品名」「単価」「メーカー」と入力を変えると、取得する列が自動で変わるようにする
=INDEX(F:I, MATCH(C3, F:F, 0), MATCH(G1, F1:I1, 0))
- 第1引数:マスタ全体(F:I)
- 第2引数:商品IDが何行目か(行番号)
- 第3引数:G1のヘッダー名がF1:I1の中で何列目か(列番号)
G1セルを切り替えるだけで取得する列が変わる、という動的な仕組みが作れるので、ダッシュボードや入力フォームで特定の列を選ばせたいときに重宝します。
VLOOKUPとINDEX+MATCHとXLOOKUPの使い分け
| 状況 | おすすめ関数 | 理由 |
| 基本的な右方向の検索 | VLOOKUP | シンプルで直感的 |
| 左方向の検索・列番号を動的に | INDEX+MATCH | VLOOKUPより柔軟 |
| 旧バージョン対応が不要 | XLOOKUP | 最もシンプルで高機能 |
| ファイルを旧Excelユーザーに配布 | VLOOKUP or INDEX+MATCH | XLOOKUP非対応バージョン対策 |
正直なところ、Microsoft 365かExcel 2021以降を全員が使っている環境なら、INDEX+MATCHを新規に覚える必要はほぼありません。XLOOKUPがINDEX+MATCHの機能をより短い構文で実現できるからです。
INDEX+MATCHが今でも価値を持つのは「旧バージョンとの互換性が必要な場面」。その条件がなければ、新しいファイルはXLOOKUPで組むほうが長期的に管理しやすいです。
⇩ XLOOKUP関数の詳しい解説はこちら ⇩
【脱VLOOKUP】XLOOKUP関数の使い方を解説!列数え不要・エラー処理もこれ1本で完結
この記事でわかること XLOOKUPの基本の使い方(コピペOKの数式付き) 受注管理表を使った実務シミュレーション #N/Aエラーをなくす方法 スピル・複数条件…
よくある質問(FAQ)
Q. INDEX+MATCHはVLOOKUPより処理が遅いですか?
A. 大量データでは若干の違いが出ることがありますが、数千〜数万行程度の業務データでは体感できる差はほぼありません。パフォーマンスを気にするなら、どちらの関数を使うかよりも「列全体指定(F:F)を使いすぎない」ことのほうが影響が大きいです。
Q. INDEX+MATCHで複数条件を指定できますか?
A. できます。=INDEX(H:H, MATCH(B3&C3, F:F&G:G, 0)) のように検索値と検索範囲を & でつなぐことで複数条件に対応できます。Microsoft 365では通常のEnterで入力可能ですが、旧バージョンではCtrl+Shift+Enterで配列数式として確定する必要があります。
Q. XLOOKUPとINDEX+MATCHはどちらがよいですか?
A. Microsoft 365またはExcel 2021以降をお使いなら、XLOOKUPが断然シンプルです。旧バージョンのExcelとファイルを共有する必要がある場合は、INDEX+MATCHが最良の選択肢になります。
まとめ
VLOOKUPの「左方向の検索ができない」「列番号がズレる」という弱点を補うのがINDEX+MATCHです。
- 基本構文は =INDEX(戻り範囲, MATCH(検索値, 検索範囲, 0))
- 左方向の逆引き検索ができる
- MATCHで列番号を動的にすることで、列の挿入・削除に強い
- & を使えば複数条件にも対応できる
ただし、Microsoft 365・Excel 2021以降を使っているなら、XLOOKUPがよりシンプルに同じ機能を実現できます。「旧バージョンとの互換性が必要かどうか」が、INDEX+MATCHを選ぶ実質的な唯一の理由と言っていいでしょう。
あわせて読みたい
VLOOKUPの使い方とは?基本構文・よくあるエラーまで完全ガイド
この記事でわかること VLOOKUPの基本構文(コピペOK) 別シート参照・複数条件の使い方 #N/A・#REF!などエラーの原因と直し方 VLOOKUPでは限…
VLOOKUPで複数条件を指定する方法【図解】|できない?代替策も完全解説
この記事でわかること VLOOKUPで複数条件が「そのままでは」使えない理由 作業列(結合列)を使って複数条件に対応する手順 XLOOKUPで作業列なしに複数条…
【脱VLOOKUP】XLOOKUP関数の使い方を解説!列数え不要・エラー処理もこれ1本で完結
この記事でわかること XLOOKUPの基本の使い方(コピペOKの数式付き) 受注管理表を使った実務シミュレーション #N/Aエラーをなくす方法 スピル・複数条件…
文/Habiny







DIME MAGAZINE














