VLOOKUP・XLOOKUP・INDEX MATCH使い分け完全ガイド|もう迷わない選び方フロー付き

スポンサーリンク

「VLOOKUPとXLOOKUPって何が違うの?」と迷ったことはありませんか。「INDEX+MATCHのほうがいい」なんて声も聞きますよね。

Excelの検索関数は選択肢が多いぶん、どれを覚えるべきか迷いますよね。間違った関数を選ぶと、あとから数式を全部書き直すハメになることも。

この記事では、3つの検索関数の違いを4つの比較軸で整理します。記事の最後には「あなたが今日から使うべき関数」がわかる選び方フローも用意しました。

この記事は次のような人におすすめ
– VLOOKUPしか使ったことがない人
– XLOOKUPに乗り換えるべきか迷っている人
– INDEX+MATCHの実力を知りたい人

VLOOKUP・XLOOKUP・INDEX/MATCHの違い【結論から】

最初に結論をお伝えします。3つの関数の使い分けは次のとおりです。

  • Microsoft 365 または Excel 2021 を使っている → XLOOKUPが最適
  • Excel 2019以前、または古いバージョンとファイルを共有する → INDEX+MATCH が安心
  • シンプルな右方向の検索だけ → VLOOKUPでも十分

3関数の機能比較表

比較項目VLOOKUPXLOOKUPINDEX+MATCH
対応バージョン全バージョンExcel 2021 / 365全バージョン
検索方向右方向のみ左右どちらも左右どちらも
エラー処理IFERRORが必要第4引数で指定可IFERRORが必要
列挿入への耐性弱い(列番号ずれ)強い強い
構文の長さ短い(4引数)短い(実質3引数)長い(2関数ネスト)
学習コスト低い低いやや高い

今日から使うべき検索関数がわかる選び方フロー

自分の環境に合った関数を判定してみてください。

ステップ1: Excelのバージョンを確認

お使いのExcelはMicrosoft 365またはExcel 2021ですか?

  • はい → ステップ2へ
  • いいえ(Excel 2019以前) → ステップ3へ
  • わからない → 「ファイル」→「アカウント」で確認できます

ステップ2: ファイルを共有する相手のバージョン

古いバージョンのExcelを使う人とファイルを共有しますか?

  • 共有しない、または相手もMicrosoft 365XLOOKUPを使いましょう
  • 共有する(相手がExcel 2019以前) → ステップ3へ

ステップ3: 検索方向の確認

検索値より左側の列から値を取得する必要がありますか?

  • はい(左方向の検索が必要)INDEX+MATCHを使いましょう
  • いいえ(右方向だけでOK)VLOOKUPでも対応できます

NOTE

「今からExcelを本気で学ぶなら、まずどれ?」と聞かれたら、答えはXLOOKUPです。Microsoft 365の普及率は年々上がっています。ただし社内の環境がExcel 2019以前の場合は、INDEX+MATCHを覚えておくと安心です。

VLOOKUP関数の特徴とメリット・デメリット

VLOOKUPの基本構文

=VLOOKUP(検索値, 範囲, 列番号, [検索の型])

たとえば、社員番号「A003」の名前を取得したい場合です。

=VLOOKUP("A003", A1:C10, 3, FALSE)

A1:C10の範囲でA列から「A003」を探します。見つかったら同じ行の3列目の値を返します。

VLOOKUPのメリット

  • 知名度が圧倒的: Excel入門書やネット記事で最も情報が多い
  • 全バージョンで動く: Excel 2007以降ならどの環境でも使える
  • 構文がシンプル: 引数4つで覚えやすい

VLOOKUPのデメリット

VLOOKUPには2つの弱点があります。

1. 左方向に検索できない

VLOOKUPは範囲の一番左の列で検索します。検索列より左の値は取得できません。

たとえばB列の商品コードで検索してA列の商品名を取得する、ということができません。この場合は列の並びを変えるか、別の関数を使う必要があります。

2. 列番号がハードコードでずれやすい

第3引数の列番号は「何列目を返すか」を数値で指定します。あとから列を挿入すると番号がずれてしまいます。

数式を100個コピーしたあとに列を追加すると、100個すべて修正が必要です。大きな表ほどリスクが高くなります。

詳しくは「VLOOKUP関数の使い方」をご覧ください。

XLOOKUP関数の特徴とメリット・デメリット

XLOOKUPの基本構文

=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])

同じく社員番号「A003」の名前を取得する場合です。

=XLOOKUP("A003", A1:A10, C1:C10)

VLOOKUPとの違いが一目でわかりますよね。列番号ではなく「どの列を返すか」を直接指定しています。

XLOOKUPのメリット

  • 左方向の検索ができる: 検索範囲と戻り範囲を自由に指定可
  • エラー処理が組み込み: 第4引数に「見つからないときの値」を直接指定可
  • 列番号がないのでずれない: 列の挿入・削除に強い

XLOOKUPでエラー処理を組み込む例です。

=XLOOKUP("A003", A1:A10, C1:C10, "該当なし")

見つからない場合は「該当なし」と表示されます。VLOOKUPのようにIFERROR関数で囲む必要がありません。

XLOOKUPのデメリット

1. 対応バージョンが限られる

XLOOKUPはExcel 2021およびMicrosoft 365専用です。Excel 2019以前では #NAME? エラーになります。

NOTE

社内でExcelのバージョンが混在している場合は要注意です。XLOOKUPで作ったファイルを古いバージョンで開くと、数式がすべてエラーになります。

2. ネット上の情報がまだ少ない

VLOOKUPと比べると解説記事や質問サイトの情報量が少なめです。困ったときに検索で解決しにくい場面があります。

詳しくは「XLOOKUP関数の使い方」をご覧ください。

INDEX/MATCH関数の特徴とメリット・デメリット

INDEX/MATCHの基本構文

INDEX関数とMATCH関数を組み合わせて使います。

=INDEX(戻り範囲, MATCH(検索値, 検索範囲, 0))

社員番号「A003」の名前を取得する場合です。

=INDEX(C1:C10, MATCH("A003", A1:A10, 0))

MATCH関数がA列から「A003」の行位置を取得します。INDEX関数がC列の同じ行の値を返します。

INDEX/MATCHのメリット

  • 全バージョン対応: Excel 2007以降ならどこでも動く
  • 左方向の検索ができる: 検索範囲と戻り範囲が独立
  • 列の挿入・削除に強い: 列番号を使わないのでずれない
  • 処理速度が速い: 大量データではVLOOKUPより高速

INDEX/MATCHのデメリット

1. 数式が長くなる

2つの関数をネストするので、数式が長くなります。慣れるまでは書き方に戸惑うかもしれません。

2. 学習コストがやや高い

INDEX関数とMATCH関数の2つを理解する必要があります。VLOOKUPやXLOOKUPが1つの関数で完結するのに対し、少しハードルが上がります。

それぞれの詳しい使い方は以下の記事で解説しています。

4つの比較軸で徹底比較

ここからは、3つの関数を4つの軸で詳しく比較していきます。

比較1: バージョン互換性

関数Excel 2016Excel 2019Excel 2021Microsoft 365
VLOOKUP使える使える使える使える
XLOOKUP使えない使えない使える使える
INDEX+MATCH使える使える使える使える

XLOOKUPだけがExcel 2021以降に限定されています。社内でバージョンが統一されていない場合は、VLOOKUPかINDEX+MATCHを選んでください。

比較2: 検索方向(左方向検索への対応)

VLOOKUPは範囲の最左列で検索し、右方向にしか値を返せません。

たとえば次のような表があるとします。

A列(商品名)B列(商品コード)C列(価格)
りんごF001150
バナナF002100

「商品コード F001 の商品名を知りたい」場合です。VLOOKUPではB列で検索してA列(左側)を返せません。

  • VLOOKUP: 不可(補助列の追加が必要)
  • XLOOKUP: =XLOOKUP("F001", B:B, A:A) で簡単にできる
  • INDEX+MATCH: =INDEX(A:A, MATCH("F001", B:B, 0)) でできる

比較3: エラー処理の手間

検索値が見つからない場合の動作を比較します。

VLOOKUPの場合(IFERROR関数が必要)

=IFERROR(VLOOKUP("A999", A1:C10, 3, FALSE), "該当なし")

XLOOKUPの場合(第4引数で指定)

=XLOOKUP("A999", A1:A10, C1:C10, "該当なし")

INDEX+MATCHの場合(IFERROR関数が必要)

=IFERROR(INDEX(C1:C10, MATCH("A999", A1:A10, 0)), "該当なし")

XLOOKUPが最もシンプルです。エラー処理を関数内で完結できるのは大きなメリットです。

比較4: 処理速度(大量データ時の違い)

数万行を超えるデータで検索する場合、処理速度に差が出ます。

関数速度の傾向理由
VLOOKUPやや遅い範囲全体を保持するためメモリ効率が低い
XLOOKUP速い検索範囲と戻り範囲が分離しており効率的
INDEX+MATCH速いMATCHが行位置だけを返すため軽量

体感できるほどの差が出るのは、数万行以上の表で大量に数式を使う場合です。数百行程度なら速度差はほぼ気になりません。

よくある失敗パターンと対処法

3つの関数で起きやすいトラブルをまとめました。

パターン1: #N/Aエラーが出る

3つの関数に共通する、最も多いエラーです。

原因対処法
検索値のスペルミス検索値と表の値を目視で確認する
余分なスペースが入っている[[2022-08-03-excel-function-howto-use-trimTRIM関数]]で空白を除去する
全角・半角の不一致ASC関数で半角に統一する
検索の型がTRUE(近似一致)FALSEまたは0を指定して完全一致にする

エラー処理にはIFERROR関数が便利です。#N/Aだけ処理したい場合はIFNA関数もおすすめです。

パターン2: VLOOKUPの列番号ずれを防ぐ方法

VLOOKUPの第3引数に数値を直接書くと、列の追加でずれます。MATCH関数を使って列番号を自動取得する方法があります。

=VLOOKUP("A003", A1:E10, MATCH("価格", A1:E1, 0), FALSE)

ヘッダー行から「価格」列の位置を自動で取得しています。列を挿入しても数式がずれません。

ただしここまでするなら、INDEX+MATCHに切り替えるほうが合理的です。

パターン3: XLOOKUPが使えないときの代替策

Excel 2019以前で #NAME? エラーが出る場合です。XLOOKUPの代わりにINDEX+MATCHを使いましょう。

XLOOKUP → INDEX+MATCHの書き換え例です。

=XLOOKUP("A003", A1:A10, C1:C10, "該当なし")

上の数式はINDEX+MATCHで書くとこうなります。

=IFERROR(INDEX(C1:C10, MATCH("A003", A1:A10, 0)), "該当なし")

機能は同じです。XLOOKUPのほうが短いですが、INDEX+MATCHなら全バージョンで動きます。

まとめ

VLOOKUP・XLOOKUP・INDEX/MATCHの違いを振り返ります。

選ぶ基準おすすめの関数
Excel 2021 / 365 でシンプルに使いたいXLOOKUP
全バージョン対応 + 左方向検索が必要INDEX+MATCH
シンプルな右方向検索だけVLOOKUP

迷ったらまずXLOOKUPを試してみてください。もしバージョンの制約がある場合は、INDEX+MATCHを覚えておけば困ることはありません。VLOOKUPは既存の数式を読み解くためにも知っておくと安心です。

3つとも「表からデータを探す」という目的は同じです。環境と用途に合った関数を選んでいきましょう。

関連記事

タイトルとURLをコピーしました