小学館IDをお持ちの方はこちらから
ログイン
初めてご利用の方
小学館IDにご登録いただくと限定イベントへの参加や読者プレゼントにお申し込み頂くことができます。また、定期にメールマガジンでお気に入りジャンルの最新情報をお届け致します。
新規登録
人気のタグ
おすすめのサイト
企業ニュース

VLOOKUPとINDEX+MATCHの違いと使い分け【図解】|列番号を動的に指定する方法も解説

2026.04.07

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分で理解する

比較項目VLOOKUPINDEX+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関数の基本形 =MATCH(検索値, 検索範囲, 0)
  • 検索値:探したい値
  • 検索範囲:検索する1列(または1行)
  • 0:完全一致(通常は0を指定)

INDEX関数:指定した行・列の値を返す(※2)

INDEX関数の基本形 =INDEX(返す範囲, 行番号)

組み合わせると:「マスタの何行目か」をMATCHで求め、その行の値をINDEXで取り出す

INDEX関数とMATCH関数を組み合わせた検索の基本形 =INDEX(戻り範囲, MATCH(検索値, 検索範囲, 0))

「MATCHで住所を調べて、INDEXでその部屋のものを取り出す」そんなイメージです。

(※1 出典:Microsoft サポート「MATCH 関数」

(※2 出典:Microsoft サポート「INDEX 関数」

【実務図解】INDEX+MATCHで商品データを取得する

VLOOKUPと同じ「商品IDから商品名を取得する」操作をINDEX+MATCHで実現します。

商品マスタ
商品ID商品名単価メーカー
A001ノートPC98,000〇〇社
A003ワイヤレスマウス3,500△△社
INDEX関数とMATCH関数を組み合わせた検索の例 =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関数とMATCH関数を組み合わせた検索の例 =INDEX(A:A, MATCH(E3, C:C, 0))

検索列(C列)の左にある商品ID(A列)も問題なく取得できます。

シーン②:列の追加・削除に強い数式を作りたい

VLOOKUPは「3列目」のように絶対的な列番号を指定するため、列の挿入・削除で番号がズレるとエラーになります。INDEX+MATCHは「G列の値を返す」と列で直接指定するため、構成変更に強いです。

複数人で管理するファイルや、マスタの構成が変わりやすい環境では特に効果を発揮します。

シーン③:列番号をヘッダー名で動的に指定したい

VLOOKUPの列番号を「3」と固定するのではなく、ヘッダー名(例:「単価」)から自動で列番号を特定できます。(詳細は次章)

列番号をMATCHで動的にする方法

「どの列を取得するかをセルで切り替えたい」場合に使えるテクニックです。

例:G1セルに「商品名」「単価」「メーカー」と入力を変えると、取得する列が自動で変わるようにする

行と列の両方を指定して検索するINDEX関数とMATCH関数の例 =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+MATCHVLOOKUPより柔軟
旧バージョン対応が不要XLOOKUP最もシンプルで高機能
ファイルを旧Excelユーザーに配布VLOOKUP or INDEX+MATCHXLOOKUP非対応バージョン対策

正直なところ、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のSNSアカウントをフォローしよう!

DIME最新号

最新号
2026年3月16日(月) 発売

やっぱり野球が好きだ!『MIX』の立花投馬が表紙を飾る最新号のDIMEはプロ野球・高校野球から球場グルメ、あだち充作品の魅力まで野球愛を全方位に深掘り。さらにSuicaの変革や各鉄道の新ビジネスを幅広く取材したシン鉄道ビジネス特集も。

人気のタグ

おすすめのサイト

ページトップへ

ABJマークは、この電子書店・電子書籍配信サービスが、著作権者からコンテンツ使用許諾を得た正規版配信サービスであることを示す登録商標(登録番号 第6091713号)です。詳しくは[ABJマーク]または[電子出版制作・流通協議会]で検索してください。