【2026年最新】ExcelのINDEX・MATCH関数完全ガイド|柔軟な検索・参照の基本構文・逆方向検索・MOS試験攻略まで徹底解説

「VLOOKUPでは左側の列を参照できない」「列番号を変えるたびに数式を直すのが面倒」——そんな悩みを解決するのがINDEX・MATCH関数の組み合わせです。ExcelのINDEX関数とMATCH関数は単体でも使えますが、2つを組み合わせることでVLOOKUPを超える柔軟な検索・参照が実現できます。本記事ではINDEX・MATCH関数の基本構文から逆方向検索・複数条件検索・二次元マトリクス検索まで2026年最新版で体系的に解説します。VLOOKUP・XLOOKUPとの違いと使い分けの基準も詳しく説明するので、業務効率化とMOS Excel試験の両方に役立ててください。

目次

INDEX・MATCH関数とは何か(基本概念)

INDEX関数の基本構文と動作原理

INDEX関数は「指定した行番号・列番号に位置するセルの値を返す」関数です。基本構文は2種類あります。①配列形式:=INDEX(配列, 行番号, [列番号])。②参照形式:=INDEX(参照, 行番号, [列番号], [領域番号])。最もよく使う配列形式の使い方を具体的に説明します。=INDEX(A1:C10, 3, 2) と入力すると、A1:C10の範囲の3行目・2列目にあるセル(B3)の値が返されます。行番号だけ指定して列番号を省略すると(1列の範囲の場合)、その行の値が返されます。逆に列番号だけ指定して行番号に0を入力すると、その列全体の配列が返されます。

INDEX関数単体の使いどころを2つ説明します。①行番号・列番号が既知の場合の値取得。例えば「A列が得点ランキングで、3位の得点を取得したい」場合、=INDEX(B2:B11, 3) のように書けます。②後述するMATCH関数と組み合わせる際の「参照先の定義」役割。INDEX関数は参照する範囲を指定し、MATCH関数が行番号・列番号を動的に計算するという役割分担がINDEX+MATCHの基本的な仕組みです。INDEX関数は配列も返せるため、スピル機能(Excel 365以降)を持つXLOOKUP・FILTER等の動的配列関数と組み合わせて高度な数式を構築することも可能です。

MATCH関数の基本構文と動作原理

MATCH関数は「指定した値が範囲内の何番目に位置するかを返す」関数です。基本構文は =MATCH(検索値, 検索範囲, [照合の種類]) です。照合の種類には3種類あります。0(完全一致)・1(以下で最大値)・-1(以上で最小値)です。実務でほぼ必ず使うのは0(完全一致)です。=MATCH(“山田”, A2:A11, 0) と入力すると、A2:A11の範囲の中で「山田」が何番目に位置するかが数値で返されます。「山田」がA5にあって3番目なら「3」が返されます。

MATCH関数の照合の種類1と-1はソート済みのデータに対して近似一致を行う場合に使います。例えば成績データで「85点以下で最も高い点数の行番号を取得する」場合は照合の種類1を使います。ただしデータが昇順ソートされていることが前提条件なため、ソートされていないデータには完全一致(0)を使ってください。MATCH関数が値を見つけられない場合は #N/A エラーが返されます。大文字・小文字・全角・半角の違いはMATCH関数では区別されないため、「Excel」と「excel」は同一とみなされます。

INDEX+MATCHの組み合わせの基本パターン

INDEX+MATCHの最も基本的な組み合わせパターンを説明します。社員リスト(A列:社員ID、B列:名前、C列:部署、D列:売上)から「社員IDを入力すると売上を返す」数式は次のように書きます。=INDEX(D2:D11, MATCH(G2, A2:A11, 0))。ここで MATCH(G2, A2:A11, 0) が「G2セルの社員IDがA2:A11の何番目にあるか」を返し、その番号をINDEX関数がD列に適用して対応する売上値を返します。

INDEXの範囲とMATCHの範囲の行数を必ず一致させることが重要です。=INDEX(D2:D11, MATCH(G2, A2:A11, 0)) では D2:D11(10行)と A2:A11(10行)が一致しています。行数が異なると誤った値が返される場合があるため注意してください。実務では絶対参照を使って =INDEX($D$2:$D$11, MATCH($G2, $A$2:$A$11, 0)) のように固定することで、数式を他のセルにコピーしても正しく動作させられます。

VLOOKUPとの違いとINDEX+MATCHが選ばれる理由

VLOOKUPの3つの限界

VLOOKUPが使いにくいシーンを3つ説明します。第一の限界は「検索列より左の列を参照できない」ことです。VLOOKUPは必ず検索範囲の一番左の列で検索し、指定した列番号分だけ右のデータを取得します。例えばA列:売上金額・B列:社員IDという構成の場合、社員IDでB列を検索して左にあるA列の売上を取得することはVLOOKUPではできません。INDEX+MATCHなら検索範囲と参照範囲を別々に指定するため、左右どちらの列でも自由に参照できます。

第二の限界は「列番号をハードコードするため表の構造変化に弱い」ことです。=VLOOKUP(A1, B:E, 3, 0) の数式は「B列から3列目(D列)を返す」という意味ですが、途中にC列を追加すると元のD列が4列目にずれてしまい数式が意図しない列を参照するようになります。INDEX+MATCHは参照先の列を直接指定するため、途中に列を挿入・削除してもズレが発生しません。第三の限界は「大量データでの処理速度」です。VLOOKUPは検索範囲全体を逐次スキャンするため、大量データに対して複数のVLOOKUPを使うとファイルが重くなりやすい傾向があります。

XLOOKUP登場後の使い分け基準

Excel 365・2021からはXLOOKUPが使えるようになり、VLOOKUPの限界の多くが解消されました。現在の使い分け基準を整理します。XLOOKUPを使うべき場面は次の通りです。①Excel 365・2021環境が保証されている場合。②シンプルな縦方向または横方向の1対1検索。③結果を複数列返したい場合(XLOOKUPは1数式で複数列を返せる)。INDEX+MATCHを使うべき場面は次の通りです。①Excel 2019以前との互換性が必要な場合。②行と列の両方をMATCHで特定する二次元マトリクス検索が必要な場合。③複雑な配列数式と組み合わせる高度な用途。

MOS Excel試験においては受験バージョンによってXLOOKUPの有無が異なります。MOS Excel 365ではXLOOKUPが出題範囲ですが、Excel 2019試験ではXLOOKUPが使えないためINDEX+MATCHの理解が必要です。現在多くの企業環境ではExcel 2019やExcel 2021が混在しているため、どちらの関数も使いこなせることが実務での強みになります。試験対策だけでなく実務適応力の観点からも、INDEX・MATCHとXLOOKUPの両方を習得しておくことを強く推奨します。

INDEX・MATCH関数の実践的な使い方

逆方向検索(右から左へ参照する)

VLOOKUPでは実現できない「右から左への検索」の具体例を示します。商品マスタ表(A列:商品名、B列:単価、C列:商品コード)で「商品コードから商品名を取得したい」場合の数式は次のように書きます。=INDEX(A2:A101, MATCH(F2, C2:C101, 0))。C列(商品コード)でF2セルの値を検索し、その行番号をINDEX関数でA列(商品名)に適用します。VLOOKUPではA列が検索基準列でないと左にあるデータを取得できませんが、INDEX+MATCHでは検索列と参照列を完全に独立して指定できます。

さらに高度な応用として、行と列の両方をMATCHで特定する「二次元マトリクス検索」があります。例えば「横軸が月(1行目)・縦軸が商品名(A列)の売上マトリクス表から、特定の商品・特定の月の売上を取得する」場合は次のように書きます。=INDEX(B2:M11, MATCH(P2, A2:A11, 0), MATCH(Q2, B1:M1, 0))。最初のMATCH(P2, A2:A11, 0) が商品名の行番号を、2番目の MATCH(Q2, B1:M1, 0) が月の列番号を返し、INDEX関数がその交差点の値を返します。この二次元検索はXLOOKUPでも応用で可能ですが、INDEX+MATCHの方が構造的にわかりやすく書ける場合があります。

複数条件での検索(配列数式を活用)

MATCH関数は単一条件の検索ですが、配列数式と組み合わせることで複数条件の検索ができます。「A列:部署・B列:担当者名・C列:売上」のデータから「部署が”営業部”かつ担当者が”山田”の売上を取得する」場合の数式を説明します。=INDEX(C2:C101, MATCH(1, (A2:A101=”営業部”)*(B2:B101=”山田”), 0))。この数式はCtrl+Shift+Enterで配列数式として入力します(Excel 365ではEnterのみで入力できます)。

数式の仕組みを解説します。(A2:A101=”営業部”) は各行がTRUE/FALSEの配列を返し、TRUEは1・FALSEは0として計算されます。同様に (B2:B101=”山田”) も1/0の配列を返します。2つを掛け合わせた積は「両方の条件が真の場合のみ1、それ以外は0」になります。MATCH(1, …, 0) は「その積の配列から1が最初に現れる位置(行番号)」を返します。その行番号をINDEXでC列に適用することで、2条件が揃った最初の行の売上が取得できます。Excel 365・2021環境ではXLOOKUPまたはFILTER関数で同様のことがよりシンプルに書けます。

IFERROR関数でエラーを処理する

INDEX+MATCHで検索値が見つからない場合、#N/Aエラーが返されます。エラーをそのまま表示せず「該当なし」や空白を表示したい場合はIFERROR関数で囲みます。=IFERROR(INDEX(D2:D101, MATCH(G2, A2:A101, 0)), “該当なし”)。検索値が見つかれば正常な値を、見つからなければ「該当なし」という文字列を返します。空白を表示する場合は IFERROR(…, “”) と書きます。ただしIFERRORは数式自体の誤りも隠してしまうため、デバッグ中はIFERRORを外して動作確認してから最後に追加することを推奨します。

#N/A以外のエラーへの対処も確認します。#VALUE!エラーはINDEXの行番号・列番号引数に数値以外の値が渡された場合に発生します。MATCHが正常に動作しているかを先に単体で確認してください。#REF!エラーはINDEXで指定した行番号が範囲外の場合に発生します。データ行数とMATCHの検索範囲を一致させているか再確認してください。#N/AエラーでMATCHが値を見つけられない主な原因は①検索値と検索範囲のデータ型の不一致(数値と文字列の混在)②先頭・末尾の余分なスペース③全角・半角の混在の3つです。TRIM関数やVALUE関数で前処理してから検索することで解決できる場合があります。

VLOOKUP・INDEX+MATCH・XLOOKUP 機能比較

機能 VLOOKUP INDEX+MATCH XLOOKUP
左方向の参照 ×(できない) ○(自由) ○(自由)
列挿入・削除への耐性 △(ズレる) ○(ズレない) ○(ズレない)
二次元マトリクス検索 × ○(2つのMATCHを使用) △(応用で可能)
複数列の一括返却 × △(配列数式) ○(単一数式で可能)
Excel 2019互換性 ×(2021以降のみ)
近似一致検索 ○(照合の種類で対応) ○(一致モードで対応)
エラー時のデフォルト値設定 ×(IFERRORが必要) ×(IFERRORが必要) ○(第4引数で設定可)
数式の複雑さ シンプル やや複雑 シンプル

MOS Excel試験でのINDEX・MATCH出題パターン

MOS Excel 365試験の出題傾向

MOS Excel 365試験においてINDEX・MATCH関数は検索・参照関数の区分で出題されます。VLOOKUP・XLOOKUPと並んで「データの検索と参照」問題として頻出です。試験での典型的な出題パターンを4つ紹介します。①「指定したリストから条件に合う値を検索して表示する数式をINDEX・MATCH関数で作成する」②「既存のVLOOKUPをINDEX・MATCH関数に書き換える」③「左方向の参照が必要なシナリオでINDEX・MATCH関数を使った数式を入力する」④「二次元の交差検索をINDEX+MATCH+MATCHで実現する」の4パターンが特に頻出です。

試験対策として押さえるべきポイントを補足します。MOS Excel 365試験では数式の入力速度も重要です。INDEX・MATCH関数の構文を暗記し、引数の意味と順番(INDEX:範囲→行番号→列番号、MATCH:検索値→範囲→照合の種類)を迷わずに入力できるレベルまで練習してください。数式バーのオートコンプリートや関数ヒントが使えますが、関数名をすぐに思い出せるかどうかが時間短縮のカギです。絶対参照($記号)の使い方も確認し、F4キーで素早く切り替えられる習熟度が問われます。

よくある操作ミスと防止策

INDEX・MATCH関数でよく見られるミスを5つ説明します。第一のミスは「INDEXの範囲とMATCHの範囲の行数が合っていない」です。例えばINDEXはD2:D20(19行)、MATCHはA2:A15(14行)と範囲がずれていると、MATCHが14以上の行番号を返したときにINDEXがエラーになります。INDEXとMATCHの範囲は常に同じ行数で揃えることを習慣にしてください。第二のミスは「MATCHの照合の種類を省略する」です。省略すると照合の種類1(昇順近似一致)として動作するため、完全一致の場合は必ず第3引数に0を指定してください。

第三のミスは「検索値と検索範囲のデータ型の不一致」です。社員IDを数値として入力したセルと、CSV取り込みで文字列として保存されたIDは見た目が同じでもデータ型が違いMATCH関数が一致を見つけられず#N/Aになります。VALUE関数やTEXT関数で型を統一してから使ってください。第四のミスは「複数条件の配列数式でCtrl+Shift+Enterを忘れる(Excel 2019以前の場合)」です。配列数式として入力しないと正しい結果が返されません。数式バーに{}カッコが表示されているか確認してください。第五のミスは「IFERROR(“”)で空白を返した結果を数値計算に使うと0として扱われる」点の見落としです。後続の計算への影響を防ぐため”0″や”N/A”を明示することを検討してください。

ExcelのINDEX・MATCH関数のよくある質問(FAQ)

Q. INDEX+MATCHとXLOOKUPはどちらを覚えればよいですか?
A. 職場のExcelバージョンによります。Excel 365・2021環境のみなら、よりシンプルに書けるXLOOKUPを優先することを推奨します。ただし、Excel 2019との互換性が必要な場合・二次元マトリクス検索が多い業務・古い社内ブックの数式を保守するケースではINDEX+MATCHの知識が必須です。MOS試験対策の場合は受験バージョン(365 or 2019)に合わせて優先度を決めてください。両方を理解しておくことが理想です。
Q. 検索値がリストの中に複数存在する場合、全件取得できますか?
A. 標準的なMATCH関数は最初に見つかった1件しか返しません。全件取得にはFILTER関数(Excel 365・2021)を使うことを推奨します。Excel 2019以前の場合は作業列を使った方法や複雑な配列数式で対応できますが難易度が高いです。複数件取得が頻繁に必要な業務ではPower QueryやFILTER関数が適切な解決策です。
Q. MATCH関数の検索範囲は縦(列)と横(行)の両方で使えますか?
A. はい、縦方向(1列の範囲)と横方向(1行の範囲)の両方に使えます。横方向の場合は =MATCH(“東京”, A1:F1, 0) のように1行の範囲を指定します。INDEX関数の列番号引数にこのMATCHを使えば二次元検索ができます。ただしMATCHの検索範囲は「1行または1列」の1次元範囲である必要があります。2次元範囲を指定するとエラーになります。
Q. 大量データでINDEX+MATCHが遅い場合の対策は?
A. まず検索範囲を必要最小限に絞る(シート全体参照A:Aを避け、A2:A10000のように具体的な範囲にする)ことが基本です。それでも遅い場合は、元データをExcelテーブルに変換して構造化参照を使う、またはXLOOKUPに切り替えることを検討してください。数万行以上の大量データにはPower QueryやPower Pivotによる事前集計が根本的な解決策になります。
Q. INDEX関数の行番号に0を指定するとどうなりますか?
A. INDEX関数で行番号に0を指定すると、指定した列全体が配列として返されます。例えば =INDEX(A1:C10, 0, 2) は B1:B10 の全値の配列を返します。Excel 365のスピル機能と組み合わせると、その配列が隣接セルに自動展開されます。これを利用して「特定の列全体を別の関数の引数として渡す」高度な数式が構築できますが、初学者のうちは通常の行番号・列番号指定で十分です。

まとめ:INDEX・MATCH関数の学習ロードマップ

ExcelのINDEX・MATCH関数を習得するための学習順序を整理します。第一段階はINDEX関数単体とMATCH関数単体の動作理解です。INDEX(範囲, 行番号) と MATCH(検索値, 範囲, 0) の基本をそれぞれ確認してください。実際にサンプルデータを作って個別に動作確認することが最短習得の近道です。第二段階は =INDEX(参照列, MATCH(検索値, 検索列, 0)) の基本パターンの習得です。VLOOKUPで書いていた数式をINDEX+MATCHで書き直す練習が効果的です。

第三段階は応用パターンの習得です。逆方向検索・二次元マトリクス検索・複数条件検索(配列数式)の3パターンを実際に手を動かして練習してください。第四段階はXLOOKUPとの比較と使い分けの判断軸の確立です。どのExcel環境でも通用するスキルを身に付けるために、同じ課題をINDEX+MATCHとXLOOKUPの両方で解く練習が有効です。INDEX・MATCH関数を自在に使いこなせるようになることは、Excelの上級者レベルの証明になります。VLOOKUPから一歩踏み出すことで、表の構造変化に強く・左方向参照も自由な、より堅牢な数式設計が実現できます。MOS Excel試験の合格に向けて、本記事で紹介した手順を繰り返し練習してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次