Home / Microsoft / Excel / 【2026年最新版】ExcelのINDEX関数とMATCH関数を組み合わせた使い方【完全ガイド】

【2026年最新版】ExcelのINDEX関数とMATCH関数を組み合わせた使い方【完全ガイド】

※本ページにはプロモーション(広告)が含まれています

【2026年最新版】ExcelのINDEX関数とMATCH関数を組み合わせた使い方【完全ガイド】

ExcelでデータをVLOOKUPで検索しようとしたら「左方向には検索できない」「列番号が変わったら数式を直さなければならない」と困った経験はありませんか?そんな悩みを解消するのが、INDEX関数とMATCH関数の組み合わせです。

INDEX+MATCHはVLOOKUPより柔軟で強力な検索が可能なため、Excelの中上級者が必ず習得するテクニックです。本記事では、基本的な構文から左方向検索、複数条件検索、最新のXMATCH関数まで、実用例を交えて丁寧に解説します。

INDEX+MATCH関数の基本構文と引数の意味

この記事でわかること

  • INDEX関数・MATCH関数それぞれの基本的な使い方
  • INDEX+MATCHの組み合わせ構文と仕組み
  • VLOOKUPとの違いとINDEX+MATCHのメリット
  • 左方向検索・複数条件検索の実用例
  • XMATCH関数との違いと使い分け
  • よくあるエラーと対処法

INDEX関数とMATCH関数の基礎知識

INDEX関数とは

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

=INDEX(配列, 行番号, [列番号])
  • 配列: 値を取り出したいセル範囲
  • 行番号: 取り出したい値が何行目にあるか
  • 列番号(省略可): 取り出したい値が何列目にあるか

例えば =INDEX(A1:C10, 3, 2) と書くと、A1〜C10の範囲の3行目・2列目(B3)の値を返します。

MATCH関数とは

MATCH関数は、指定した範囲の中から「探したい値が何番目にあるか(位置)を返す」関数です。

=MATCH(検索値, 検索範囲, [照合の種類])
  • 検索値: 探したい値
  • 検索範囲: 1行または1列のセル範囲
  • 照合の種類: 0(完全一致)、1(以下)、-1(以上)

例えば =MATCH("田中", A1:A10, 0) と書くと、A1〜A10の中で「田中」が何行目にあるかを数値で返します。「田中」がA4にあれば「4」が返ります。

INDEX+MATCHの組み合わせの仕組み

2つの関数を組み合わせると「MATCH関数が返した位置番号をINDEX関数の行番号として使う」ことができ、名前を指定して関連データを取り出す検索式になります。

=INDEX(取り出したい列の範囲, MATCH(検索値, 検索する列の範囲, 0))

MATCHが「検索値が何行目にあるか」を調べ、INDEXがその行番号の値を取り出す、という流れです。

VLOOKUPとINDEX+MATCHの違い・メリット比較

比較項目 VLOOKUP INDEX+MATCH
検索方向 左端の列から右方向のみ 左右どちらの方向も可能
列番号の指定 数値で指定(列追加で変わる) 範囲指定(列追加の影響なし)
複数条件検索 単独では不可 配列数式で可能
大文字・小文字の区別 区別しない EXACT関数と組み合わせ可能
処理速度 やや速い(シンプルな場合) 複雑な検索では優位な場合も
数式の可読性 シンプルでわかりやすい やや複雑だが柔軟性が高い

INDEX+MATCHの実用例

VLOOKUPでできない左方向検索をINDEX+MATCHで実現する方法

例1: 基本的な名前検索(VLOOKUP相当)

社員名から部署を検索する例です。A列に社員名、B列に部署が入っているとします。

=INDEX(B:B, MATCH("田中太郎", A:A, 0))

「田中太郎」がA列の何行目にあるかをMATCHで調べ、同じ行のB列(部署)をINDEXで取り出します。

例2: 左方向検索(VLOOKUPではできない)

商品コードがB列、商品名がA列にある場合(コードが右、名前が左)に商品コードで商品名を検索する例です。VLOOKUPでは左側の列は取り出せませんが、INDEX+MATCHなら問題ありません。

=INDEX(A:A, MATCH("P001", B:B, 0))

B列から「P001」の位置を特定し、同行のA列(商品名)を返します。

例3: 複数条件での検索(Ctrl+Shift+Enterの配列数式)

A列に部署名、B列に役職、C列に氏名が入っていて「営業部かつ部長」の氏名を検索する例です。

=INDEX(C:C, MATCH(1, (A:A="営業部")*(B:B="部長"), 0))

この数式はExcel 2019以前では Ctrl+Shift+Enter で確定(配列数式として入力)する必要があります。Excel 365・2021ではEnterのみで動作します。

仕組みとしては、A列が「営業部」かつB列が「部長」の場合に1、それ以外は0になる配列を作り、MATCHで最初の「1」の位置を見つけています。

例4: 価格一覧から最安値の商品名を取得

A列に商品名、B列に価格が入っているとき、最安値の商品名を取り出す例です。

=INDEX(A:A, MATCH(MIN(B:B), B:B, 0))

MINでB列の最小値を求め、その値がB列の何行目にあるかをMATCHで特定し、同行のA列の商品名をINDEXで返します。

例5: 複数列を一度に取り出す(複数列返し)

名前を検索してA〜D列の情報を一括で取り出す場合、列番号の部分を配列にします。

=INDEX(A:D, MATCH("山田花子", A:A, 0), {1,2,3,4})

ただしこの方法はExcelバージョンによって動作が異なります。Excel 365ではスピル機能により複数セルに自動展開されます。

XMATCH関数との違いと使い分け

Excel 365・2021から追加されたXMATCH関数はMATCH関数の進化版です。INDEX関数と組み合わせてさらに強力な検索ができます。

XMATCH関数の構文

=XMATCH(検索値, 検索範囲, [一致モード], [検索モード])
引数 説明
検索値 探したい値
検索範囲 検索する1行または1列の範囲
一致モード 0=完全一致、-1=完全一致または以下、1=完全一致または以上、2=ワイルドカード一致
検索モード 1=先頭から検索、-1=末尾から検索、2=バイナリ昇順、-2=バイナリ降順

MATCH vs XMATCH どちらを使うべきか

  • Excel 365/2021を使用している: XMATCHを使うと末尾からの検索やワイルドカードが簡単に使える
  • Excel 2019以前、複数バージョン対応が必要: MATCHを使う(互換性が高い)
  • XLOOKUP関数が使える環境: INDEX+MATCHの代わりにXLOOKUPで完結する場合も多い
🛒

この記事に関連するおすすめ商品

Microsoft 365 Personal 1年版 公式ライセンス

約14,000円

INDEX+MATCH関数・XLOOKUP関数をフル活用できる最新Excel



Amazonで探す

Dell 27インチ モニター フルHD IPS FHD

約25,000〜35,000円

Excelの複数シート参照・INDEX+MATCH作業が快適な大画面モニター



Amazonで探す

ロジクール MX Master 3S ワイヤレスマウス 静音 高精度

約12,000〜18,000円

ExcelのINDEX関数・セル選択操作が快適な高精度ワイヤレスマウス



Amazonで探す

※ 価格は変動する場合があります。最新価格はリンク先でご確認ください

よくあるエラーと対処法

複数条件でのINDEX+MATCH・XMATCHの活用方法

#N/Aエラーが表示される

MATCH関数が検索値を見つけられない場合に発生します。

  • 検索値のスペルや余分なスペースを確認(TRIM関数で整形)
  • 照合の種類が0(完全一致)になっているか確認
  • 数値と文字列の混在がないか確認(例: “100”と100は別物)
  • IFERROR関数で囲んでエラー時に空白や代替テキストを表示: =IFERROR(INDEX(...),"見つかりません")

#REF!エラーが表示される

INDEXの配列範囲とMATCHの検索範囲の行数が一致していない場合などに発生します。範囲指定を確認してください。

検索結果が想定と違う値になる

照合の種類を0(完全一致)にしていない場合、近似値が返されることがあります。第3引数には必ず「0」を指定する習慣をつけましょう。

FAQ(よくある質問)

Q1. INDEX+MATCHはVLOOKUPより難しいですか?

A. 最初は2つの関数を組み合わせる点でとっつきにくいですが、慣れると非常に直感的です。VLOOKUPが「左端から右方向のみ」という制約を覚えておく必要があるのに対し、INDEX+MATCHは「どこでも自由に検索できる」という覚え方をすると理解しやすいです。

Q2. INDEX+MATCHはXLOOKUPが使える環境では不要ですか?

A. Excel 365/2021でXLOOKUPが使える場合、多くのケースでXLOOKUPの方が簡潔に書けます。ただしINDEX+MATCHは複雑な集計との組み合わせやExcel 2019以前との互換性が必要な場面では依然として有用です。

Q3. 複数条件検索を配列数式なしで行う方法はありますか?

A. Excel 365/2021の環境であればCONCAT関数やXMATCH+XLOOKUPを使って配列数式なしで複数条件検索ができます。また、補助列を追加して複数条件を1つの文字列に結合してからMATCHで検索する方法も有効です。

Q4. INDEX+MATCHで最後に一致した値を取り出すには?

A. MATCHは最初に一致した位置を返します。最後の一致位置を取得するには、XMATCHの検索モードを-1(末尾から検索)にするか、配列数式を工夫する必要があります。Excel 365ならXMATCHが最も簡単な解決策です。

Q5. INDEX+MATCHで行と列を両方可変にする(二方向検索)は可能ですか?

A. 可能です。=INDEX(データ範囲, MATCH(行検索値, 行見出し列, 0), MATCH(列検索値, 列見出し行, 0)) の形式でINDEXの行番号・列番号両方にMATCHを使います。これを「二方向検索」または「行列一致検索」と呼び、複雑な表からのデータ抽出に便利です。

まとめ

INDEX+MATCHは、VLOOKUPの制約(左方向検索不可・列番号の固定)を解消する強力な関数の組み合わせです。慣れるまでは数式が複雑に見えますが、「MATCHで位置を調べてINDEXで値を取り出す」というシンプルな仕組みを理解すれば、様々な検索シーンで活用できます。

特に左方向検索・複数条件検索・最大最小値の関連データ取り出しなど、VLOOKUPでは対応できないケースでINDEX+MATCHは威力を発揮します。Excel 365/2021をお使いであればXMATCHやXLOOKUPも組み合わせて、さらに効率的なデータ検索を実現してください。

Check Also

Excelで重複データを削除と検出する方法

【2026年最新版】Excelで重複データを削除・検出する方法【完全ガイド】

【2026年最新版】Excel …