VLOOKUPは使えるのに、列の追加や左方向検索でうまくいかない。そんな悩みを解決しやすいのがINDEX MATCHです。見た目は少し難しく感じますが、考え方はとてもシンプルです。この記事では、すぐ使える構文テンプレート、基本の手順、複数条件、別シート参照、横方向検索、よくあるエラー対処までを順番に整理し、実務で迷わない使い方をわかりやすく解説します。
【コピペOK】INDEX MATCHの構文テンプレート

まずは完成形を押さえるのが最短です。
INDEX MATCHは、取得したい範囲をINDEXで指定し、その中の何番目かをMATCHで返す形が基本です。
最もよく使う完全一致の型は、=INDEX(B2:B10,MATCH(E2,A2:A10,0)) です。
この1本を覚えるだけで、商品コード検索、社員番号検索、マスタ参照の多くを処理できます。
基本構文と各引数の意味
結論から言うと、INDEX MATCHは取得範囲と検索範囲を分けて指定できるのが強みです。
基本構文は =INDEX(戻り範囲,MATCH(検索値,検索範囲,0)) です。
戻り範囲は最終的に返したい列や行、検索値は探したい値、検索範囲はその値を探す場所です。
最後の 0 は完全一致を意味します。
実務ではこの 0 を省かず入れると、想定外の近似一致を防げます。
実務で使える汎用テンプレート3選
よく使う型は3つだけ覚えれば十分です。
縦方向の完全一致: =INDEX(B:B,MATCH(E2,A:A,0))別シート参照: =INDEX(商品マスタ!B:B,MATCH(A2,商品マスタ!A:A,0))複数条件: =INDEX(C2:C10,MATCH(1,(A2:A10=F2)(B2:B10=G2),0))
1つ目は最頻出、2つ目はマスタ管理、3つ目は日付と担当者の組み合わせ検索などに便利です。
まずはこの3本を保存しておくと、作業開始までの時間を大きく短縮できます。
INDEX MATCHとは?2つの関数を組み合わせる仕組み

INDEX MATCHは、位置を探す処理と値を返す処理を分業させた検索方法です。
MATCHが検索値の位置を求め、INDEXがその位置にある値を返します。
VLOOKUPのように表全体をまとめて扱うのではなく、必要な列だけを個別に指定できるため、列追加や並び替えに強いのが特徴です。
INDEX関数とMATCH関数それぞれの役割
INDEX関数は、指定した範囲の何行目、何列目にある値を返す関数です。
たとえば =INDEX(B2:B5,2) なら、B3 の値を返します。
一方のMATCH関数は、検索値が範囲内で何番目かを返します。
=MATCH(E2,A2:A10,0) なら、E2 と一致する値が A2:A10 の何番目にあるかを数字で返します。
この数字をINDEXに渡すことで、柔軟な検索が実現します。
組み合わせることで得られる3つのメリット
INDEX MATCHを使う実務上の利点は、主に3つあります。
左方向検索ができる列番号を手で数えなくてよい表の構造変更に強い
たとえば商品コードが右、商品名が左にある表でも、そのまま検索できます。
さらに VLOOKUP の第3引数のような列番号指定が不要なので、列挿入後のズレも起こりにくくなります。
VLOOKUPとの違いを図解で比較
違いを一言でいえば、VLOOKUPは表基準、INDEX MATCHは範囲基準です。
比較項目VLOOKUPINDEX MATCH検索方向右方向が基本左右どちらも可指定方法表全体と列番号検索範囲と戻り範囲を分離列追加への強さ弱い強い柔軟性中高い
検索列より左の値を返したい、列挿入が多い、複数条件に発展させたい場合は、INDEX MATCHの方が扱いやすいです。
INDEX MATCHの基本的な使い方【ステップ解説】

初めて使うなら、戻り範囲を決める、位置を探す、2つをつなぐ、の3段階で考えると失敗しません。
ここでは、商品コードから商品名を返す定番例で流れを確認します。
式の完成形だけを見るより、途中の意味を理解した方が応用しやすくなります。
例題:商品コードから商品名を取得する
例として、A列に商品コード、B列に商品名が入った表を使います。
E2 に入力した商品コードをもとに、対応する商品名を F2 に表示するイメージです。
この場合の完成式は、=INDEX(B2:B10,MATCH(E2,A2:A10,0)) になります。
A列で位置を探し、B列から同じ位置の値を返すだけと考えると理解しやすいです。
手順1|戻り範囲(取得したい列)を指定する
最初に決めるのは、何を返したいかです。
今回は商品名を返したいので、INDEXの第1引数には B2:B10 を入れます。
ここを検索列の A2:A10 にしてしまうと、コードそのものが返るため結果がずれます。
INDEX MATCHで迷ったら、まず戻したい列を先に選ぶとミスが減ります。
手順2|MATCH関数で検索値の位置を取得する
次に、検索値が何番目にあるかをMATCHで調べます。
式は =MATCH(E2,A2:A10,0) です。
たとえば E2 の商品コードが A5 にあれば、A2:A10 の中では4番目なので 4 が返ります。
この数字はセル番地ではなく、指定範囲の先頭から数えた相対位置です。
手順3|数式を完成させてオートフィルでコピー
最後にINDEXとMATCHを組み合わせれば完成です。
F2 に =INDEX(B2:B10,MATCH(E2,A2:A10,0)) を入力し、下方向へオートフィルすれば複数行へ展開できます。
検索表を固定したいときは、$A2:A$10 や $B2:B$10 のように絶対参照にするとコピー時のズレを防げます。
実務ではこの絶対参照の有無で結果が大きく変わるため、セットで覚えるのがおすすめです。
INDEX MATCHで複数条件を指定する方法

2つ以上の条件で検索したいときも、INDEX MATCHなら対応できます。
代表的なのは、作業列を使う方法と、配列計算で直接判定する方法の2つです。
初心者はまず作業列、列を増やしたくない場合は配列数式を選ぶと判断しやすいです。
方法1|作業列を使う(初心者におすすめ)
最も確実なのは、条件を結合したキーを作る方法です。
たとえば A列が日付、B列が担当者、C列に =A2&B2 で結合キーを作り、結果を D列に持たせます。
検索式は =INDEX(D:D,MATCH(F2&G2,C:C,0)) です。
目で確認しやすく、どこで不一致が起きたか追いやすいので、初学者や共有ファイルに向いています。
方法2|配列数式を使う(列を増やしたくない場合)
列を増やせないなら、条件ごとの一致判定を掛け合わせます。
代表式は =INDEX(C2:C10,MATCH(1,(A2:A10=F2)*(B2:B10=G2),0)) です。
2条件が両方一致した行だけ 1 になるため、その位置をMATCHで探します。
最近のExcelではそのまま確定できることが多いですが、環境によっては Ctrl+Shift+Enter が必要な場合もあります。
INDEX MATCHで別シートからデータを取得する方法

別シート参照でも考え方は同じです。
違うのは、戻り範囲と検索範囲の前にシート名を付ける点だけです。
商品マスタを別シートで管理しているブックでは、この形を使えるようになると作業効率が大きく上がります。
別シート参照の構文と書き方
基本構文は、=INDEX(シート名!戻り範囲,MATCH(検索値,シート名!検索範囲,0)) です。
たとえば =INDEX(商品マスタ!B:B,MATCH(A2,商品マスタ!A:A,0)) と書けば、現在シートの A2 をもとに別シートから商品名を取得できます。
表が大きい場合は列全体参照でも動きますが、速度重視なら B2:B5000 のように範囲を絞ると軽くなります。
シート名にスペースや記号がある場合の対処法
シート名に空白や記号があるときは、シート名をシングルクォートで囲みます。
たとえば =INDEX(‘商品 マスタ’!B:B,MATCH(A2,’商品 マスタ’!A:A,0)) のように書きます。
このルールを知らないと #NAME? や入力ミスに見える不具合が起きやすいです。
スペース、ハイフン、丸括弧が入るシート名では、最初から囲む癖を付けると安心です。
INDEX MATCHで横方向(行方向)に検索する方法

横方向検索もINDEX MATCHなら簡単です。
VLOOKUPが縦表前提なのに対し、INDEX MATCHは行でも列でも考え方を変えずに使えます。
月別売上や横持ちの集計表を扱う場面で特に便利です。
横方向検索の構文と具体例
横方向では、検索範囲を行、戻り範囲も行で指定します。
たとえば B1:H1 に月名、B2:H2 に売上があり、J2 に月名が入るなら、=INDEX(B2:H2,MATCH(J2,B1:H1,0)) で対応できます。
J2 が 6月 なら、B1:H1 の中で一致した位置を探し、同じ位置の B2:H2 から売上を返します。
HLOOKUPよりも応用が利くので、横表でもINDEX MATCHで統一すると覚える式を減らせます。
INDEX MATCHでよくあるエラー5選と解決法

INDEX MATCHの失敗は、ほとんどが範囲指定か一致条件の見落としです。
代表的な5つの症状を知っておけば、原因の切り分けが速くなります。
特に #N/A と誤った値の返却は発生頻度が高いため、先に確認手順を覚えておくと安心です。
#N/Aエラー|検索値が見つからない場合
#N/A は、MATCHで一致する値が見つからないときに出ます。
原因は、前後スペース、全角半角の違い、数値と文字列の型違いが多いです。
まずは =MATCH(E2,A2:A10,0) を単体で試し、検索値と検索範囲の表記ゆれを確認してください。
必要に応じて TRIM や VALUE を組み合わせると改善しやすいです。
#REFエラー|参照範囲が無効な場合
#REF は、参照先が削除されたり、INDEXの範囲が壊れたりしたときに発生します。
たとえば元の列を削除した後、古い範囲を参照しているケースが典型例です。
数式バーで戻り範囲と検索範囲を見直し、削除や移動後に正しい列を指しているか確認しましょう。
表の構造変更が多いなら、テーブル化して列名参照にする方法も有効です。
#VALUE!エラー|引数の指定ミス
#VALUE! は、引数の型や範囲の形が合っていないときに出やすいエラーです。
たとえば縦1列の戻り範囲に対して、横1行の位置情報を渡すと整合しません。
また、複数条件式で配列の高さが揃っていないときも起こります。
A2:A10 と B2:B9 のような行数違いがないかを最初に確認してください。
結果が0になる|空白セルを参照している場合
エラーではないのに 0 が返る場合は、参照先が空白セルのことがあります。
INDEXは一致位置を正しく見つけていても、戻り範囲のその行が空なら 0 表示になることがあります。
表示上は失敗に見えるため、戻り範囲の元データを確認し、必要なら IF 関数で空白時の表示を整えます。
入力漏れの検知には、条件付き書式を併用すると管理しやすいです。
間違った値が返る|照合の型の設定ミス
誤った値が返る原因として見落としやすいのが、MATCHの第3引数です。
ここが 1 や -1 だと近似一致になり、並び順が条件に合っていないと別の行を返します。
完全一致で探したいなら、必ず 0 を指定する のが基本です。
特にコード検索やID検索では、近似一致はほぼ不要なので 0 固定で覚えて問題ありません。
INDEX MATCH・VLOOKUP・XLOOKUPの使い分け

結論として、簡単さならVLOOKUP、柔軟性ならINDEX MATCH、総合力ならXLOOKUPです。
ただしXLOOKUPは利用環境に左右されるため、社内で古いExcelが混在するならINDEX MATCHが安定策になります。
使い分けを明確にすると、関数選びで迷う時間を減らせます。
3つの関数を比較表でチェック
関数強み弱み向いている場面VLOOKUP覚えやすい左検索に弱い単純な右方向検索INDEX MATCH柔軟で壊れにくい式がやや長い実務の標準検索XLOOKUP高機能で直感的環境差がある新しいExcel環境
検索列が左にある、複数条件へ発展したい、表構造がよく変わるなら、INDEX MATCHが最も無難です。
INDEX MATCHを選ぶべき3つの場面
INDEX MATCHを優先したい場面は明確です。
左方向検索が必要なとき列の追加や並び替えが頻繁なときXLOOKUPが使えない環境を含むとき
たとえば共有ファイルを複数部署で使う場合、バージョン差の影響を受けにくいINDEX MATCHは特に有効です。
一度覚えれば、縦検索、横検索、複数条件まで同じ発想で広げられるのも大きな利点です。
まとめ

INDEX MATCHは、検索位置を求めるMATCHと、値を返すINDEXを組み合わせる検索の基本形です。
VLOOKUPより柔軟で、XLOOKUPが使えない環境でも実務レベルで十分に活躍します。
基本形は =INDEX(戻り範囲,MATCH(検索値,検索範囲,0))左方向検索や列追加に強い複数条件や別シート参照にも発展できるエラー時はまずMATCH単体で原因を切り分けるまずは商品コード検索の例を自分の表で1回試す
最初は基本の完全一致から始め、慣れたら複数条件と別シート参照へ広げると、実務での対応力が一気に高まります。


コメント