検索の関数——VLOOKUP・XLOOKUP・INDEX/MATCH の使い分け
レッスン3:検索の関数——VLOOKUP・XLOOKUP・INDEX/MATCH の使い分け
このレッスンで学ぶこと
- VLOOKUP の基本構造と限界を理解する
- XLOOKUP の登場と利点を整理できる
- INDEX/MATCH の発想と柔軟性を把握する
- 3 つの関数の使い分け基準を持つ
- 近似一致と完全一致の違いを理解する
- 検索のエラー対処を整理する
- 2026 年 6 月時点の業務現場の現実を踏まえる
前のレッスンでは、関数の基本構造、相対参照と絶対参照、SUM・IF・COUNTIF などの集計関数を扱いました。今回のレッスンでは、Excel で最もよく使われる「検索の関数」を扱います。VLOOKUP、XLOOKUP、INDEX/MATCH——名前は聞いたことがあっても、3 つの違いと使い分けまで整理されている方は多くありません。本レッスンで、判断軸を持ち帰っていただきます。
検索の関数とは何か
検索の関数は、「ある値をキーに、別の表から関連する値を取得する」関数です。
例:
- 商品コードを入力したら、商品名と価格を自動で表示
- 社員番号を入力したら、氏名と部署を自動で表示
- 注文番号を入力したら、配送日と金額を自動で表示
業務でデータを扱うとき、複数の表を行き来して情報を組み合わせる場面は必ず出てきます。検索の関数は、そのときの効率を決定的に変えます。
検索の典型的な場面
A 表(商品マスター)
| 商品コード | 商品名 | 価格 |
| A001 | リンゴ | 200 |
| A002 | バナナ | 150 |
| A003 | オレンジ | 250 |
B 表(注文票)
| 注文ID | 商品コード | 数量 |
| 1 | A002 | 5 |
| 2 | A001 | 3 |
| 3 | A003 | 2 |
B 表の「商品コード」を見て、A 表の「商品名」と「価格」を引っ張ってきたい——これが検索の関数の典型的な場面です。
VLOOKUP——伝統の関数
VLOOKUP は、Excel の長期にわたる定番関数です。「V」は Vertical(縦方向)の意味で、縦方向の表から値を検索します。
VLOOKUP の構造
=VLOOKUP(検索値, 検索する範囲, 列番号, 検索方法)
- 検索値:探したい値(例:商品コード)
- 検索する範囲:検索対象の表全体
- 列番号:取得したい列が範囲の何列目か(左端から数える)
- 検索方法:
FALSE(完全一致)またはTRUE(近似一致)
例:
=VLOOKUP("A002", A2:C4, 2, FALSE)
… A2:C4 の範囲で「A002」を縦方向に検索し、見つかった行の 2 列目(商品名)を返す
… 結果:「バナナ」
VLOOKUP の限界
VLOOKUP は強力ですが、以下の限界があります。
- 左方向の検索ができない:検索値より右の列しか取得できない(「商品名から商品コードを取得」ができない)
- 列番号が数値:列を挿入すると、列番号がずれて式が壊れる
- 完全一致のときは必ず
FALSEを付ける:忘れると近似一致になり、意図しない結果になる - 検索値が複数ヒットしても、最初の 1 件しか返さない
⚠️ 注意 VLOOKUP で最も多いミスが「
FALSEを忘れて近似一致になる」です。完全一致を期待しているなら、必ずFALSEまたは0を付けましょう。
XLOOKUP——新世代の検索関数
XLOOKUP は、Microsoft 365 で 2019 年にプレビュー、2020 年 1 月に一般提供が始まった新しい関数です。VLOOKUP の限界を解消し、より柔軟に検索できます。
XLOOKUP の構造
=XLOOKUP(検索値, 検索範囲, 返す範囲, [見つからない場合], [一致モード], [検索モード])
- 検索値:探したい値
- 検索範囲:検索対象の列(1 列を指定)
- 返す範囲:取得したい列(1 列を指定)
- 見つからない場合(省略可):見つからないときに返す値
- 一致モード(省略可):0=完全一致(既定)、-1=完全一致または小さい近似、1=完全一致または大きい近似、2=ワイルドカード一致
- 検索モード(省略可):1=先頭から(既定)、-1=末尾から、など
例:
=XLOOKUP("A002", A2:A4, B2:B4)
… A 列で「A002」を検索し、見つかった行の B 列(商品名)を返す
… 結果:「バナナ」
=XLOOKUP("A099", A2:A4, B2:B4, "未登録")
… A 列で「A099」を検索し、見つからない場合は「未登録」を返す
XLOOKUP の利点
- 左方向の検索ができる:検索範囲と返す範囲を独立に指定できる
- 列番号ではなく列範囲で指定:列の挿入で壊れにくい
- 完全一致がデフォルト:
FALSEを書き忘れて事故になることがない - 見つからない場合の値を引数で指定できる:IFERROR でラップする必要がない
- 動的配列(レッスン 7)と組み合わせやすい
Google スプレッドシートでの利用
Google スプレッドシートも 2022 年に XLOOKUP に対応しました。Excel と同じ書式で使えます。
💡 ポイント 新規に式を書くなら、XLOOKUP のほうが書きやすく、壊れにくいです。一方で、業務現場には VLOOKUP で組まれたシートが大量にあります。両方読める状態を目指すのが現実的です。
INDEX/MATCH——古典的な柔軟解
VLOOKUP の限界を補うために古くから使われてきたのが、INDEX と MATCH の組み合わせです。
INDEX——「範囲の n 行目 m 列目」を取得
=INDEX(範囲, 行番号, 列番号)
例:
=INDEX(A2:C4, 2, 2)
… A2:C4 の範囲の 2 行目 2 列目を取得
… 結果:「バナナ」(B3 セルの値)
MATCH——「ある値が範囲の何行目か」を取得
=MATCH(検索値, 検索範囲, 検索方法)
例:
=MATCH("A002", A2:A4, 0)
… A2:A4 で「A002」を検索し、何番目にあるかを返す
… 結果:2(A2:A4 の中で 2 番目)
検索方法は 0(完全一致)、1(昇順データで以下を返す)、-1(降順データで以上を返す)です。
INDEX/MATCH の組み合わせ
両者を組み合わせると、VLOOKUP より柔軟な検索ができます。
=INDEX(B2:B4, MATCH("A002", A2:A4, 0))
… A2:A4 で「A002」を検索した順位を MATCH で取得し、その順位を INDEX で B 列から取り出す
… 結果:「バナナ」
INDEX/MATCH の利点
- 左方向の検索もできる:列の順序に依存しない
- 列の挿入で壊れにくい:列番号ではなく範囲で指定
- 検索範囲と返す範囲を別々に指定できる
- どんな Excel バージョンでも使える(古い Excel でも)
INDEX/MATCH の難点
- 2 つの関数を組み合わせるため、初見ではわかりにくい
- 書く文字数が多い
- XLOOKUP が登場してからは、新規で使う場面が減った
3 つの使い分け
3 つの関数の使い分けを、判断ツリーで整理します。
flowchart TD
A[検索の関数を使いたい] --> B{Microsoft 365<br/>または<br/>Google スプレッドシート?}
B -->|Yes| C[XLOOKUP を使う]
B -->|No| D{左方向の検索や<br/>列の挿入耐性が必要?}
D -->|Yes| E[INDEX/MATCH を使う]
D -->|No| F[VLOOKUP を使う]
判断のまとめ
| 状況 | 推奨 |
|---|---|
| Microsoft 365 または Google スプレッドシートで新規作成 | XLOOKUP |
| 古い Excel(2019 以前)で新規作成 | INDEX/MATCH |
| 古い Excel で単純な右方向検索だけ | VLOOKUP(容認) |
| 既存シートのメンテナンス(VLOOKUP で書かれている) | VLOOKUP を維持(無理に書き換えない) |
業務現場の現実
2026 年 6 月時点でも、企業の業務現場では VLOOKUP が圧倒的に多く使われています。理由は、
- Excel 2019 以前で作られたシートが大量に残っている
- VLOOKUP で書かれた既存資産を書き換えるリスクとコスト
- 社員のスキルが VLOOKUP に偏っている
- マネジメント層が「VLOOKUP は知っているが XLOOKUP は知らない」状態
「新規は XLOOKUP、既存は VLOOKUP のまま」というハイブリッド戦略が、現実的な現場の姿です。
📝 補足 「XLOOKUP に全部書き換えるべき」と決めつけないでください。書き換えにはコストとリスクがあり、既存シートが安定して動いているなら、書き換える優先度は高くありません。
近似一致と完全一致
検索の関数で混乱しやすいのが、「近似一致」と「完全一致」の違いです。
完全一致
検索値と「ぴったり一致するもの」だけを探す方式。VLOOKUP の FALSE、XLOOKUP の一致モード 0、MATCH の検索方法 0 がこれにあたります。
業務で使うのは、ほとんどの場合「完全一致」です。商品コード、社員番号、注文番号など、明確な ID で検索するときは完全一致を選びます。
近似一致
検索値と「ぴったり一致しなくても、近いもの」を返す方式。VLOOKUP の TRUE(既定)、XLOOKUP の一致モード -1/1 がこれにあたります。
近似一致が役立つのは、「価格帯から割引率を出す」「点数から成績ランクを出す」のような、段階表(しきい値表)を引くときです。
例:
段階表(昇順)
| 点数下限 | ランク |
| 0 | E |
| 60 | D |
| 70 | C |
| 80 | B |
| 90 | A |
=VLOOKUP(75, 段階表, 2, TRUE)
… 75 点に対する近似一致で「C」を返す
「近似一致のときは検索範囲を昇順に並べる」必須ルール
近似一致を使うときは、検索範囲が昇順で並んでいる必要があります。並んでいないと、間違った結果を返します。
「完全一致を使うのを忘れて、近似一致で偶然それらしい結果が返ってきたが実は間違い」という事故は、業務で繰り返し起きています。
⚠️ 注意 完全一致と近似一致の取り違えは、検索関数で最も恐ろしいバグの原因です。業務では、特に理由がない限り完全一致(FALSE / 0)を選びます。
検索のエラー対処
検索でよく出るエラーと対処を整理します。
#N/A が出る場合
「検索値が範囲にない」が最大の原因です。以下を確認しましょう。
- 表記揺れ:「東京都」と「東京」、半角と全角、前後の空白
- データ型の違い:数値の
1と文字の"1"は別物 - 完全一致と近似一致の取り違え:意図と違うモードになっていないか
- 検索範囲の指定ミス:範囲が想定と違う
IFERROR でわかりやすい表示にする
エラーが出る可能性のある式は、IFERROR で包むと業務的に親切です。
=IFERROR(VLOOKUP(A2, データ範囲, 2, FALSE), "未登録")
… 見つからない場合は「未登録」と表示
=XLOOKUP(A2, 検索範囲, 返す範囲, "未登録")
… XLOOKUP は引数 4 で同じことができる
#REF! が出る場合
参照しているセルや列が削除されたときに出ます。VLOOKUP で「列番号を数値指定」していて、列を挿入・削除したときに発生しやすい代表例です。
講師の現場メモ:「VLOOKUP の FALSE 忘れで 1 億円違いの納品ミス」
私(水田)が大手コンサルファームで支援していた中堅小売業の話です。発注担当者から「VLOOKUP で組んだ発注シートで、商品コードを入れると間違った価格が出る」と緊急相談を受けました。
シートを見ると、発注金額の総額が想定の 4 倍。1 億円を超えていました。
原因は、VLOOKUP の 4 つ目の引数(検索方法)が FALSE ではなく空欄になっていたことです。
=VLOOKUP(B2, 商品マスター, 3)
↑ 4 つ目の引数がない → 既定値は TRUE(近似一致)
商品コードが商品マスターになかった場合、近似一致で「いちばん近い別の商品の価格」を返していました。発注総額が想定より大きく膨らんでいたのに、誰も検算していませんでした。
私は緊急対応で、
- すべての VLOOKUP に
FALSEを追加 - IFERROR でラップして見つからない場合は「未登録」と表示
- 発注総額の妥当性チェック式(前月比較)を追加
- 検算ルール(金額が前月の 2 倍を超えたら警告)を整備
を行いました。発注前に気づけて納品事故は回避できましたが、もし気づかず発注していたら、過剰在庫で数千万円規模の被害になっていたはずです。
このときに痛感したのは、VLOOKUP の「FALSE を書く習慣」は、ただのスキルではなく業務リスク対策だ、ということです。1 文字書き忘れるだけで、業務全体が傾く事故が起きます。本コースで XLOOKUP を推奨するのも、FALSE を書かなくて済む(完全一致がデフォルト)のが業務リスクを大きく下げるからです。
新しい関数を使うときに「便利だから」だけでなく、「事故を減らすから」という観点を持つと、関数選定の判断軸が広がります。
まとめ
このレッスンでは、以下のことを学びました。
- 検索の関数は「ある値をキーに、別の表から関連する値を取得する」関数。業務で複数の表を行き来する効率を決める
- VLOOKUP:
=VLOOKUP(検索値, 範囲, 列番号, 検索方法)。長期の定番だが左方向検索不可、列番号ずれに弱い、FALSEを忘れる事故が多い - XLOOKUP:
=XLOOKUP(検索値, 検索範囲, 返す範囲, [見つからない場合], ...)。Microsoft 365 で 2019 年プレビュー・2020 年一般提供、Google スプレッドシートで 2022 年対応。左方向検索可、列の挿入に強い、完全一致がデフォルト - INDEX/MATCH:古い Excel でも使える柔軟な組み合わせ。読みにくい難点
- 使い分け:Microsoft 365/Google なら XLOOKUP、古い Excel で柔軟性が要るなら INDEX/MATCH、単純な右方向検索なら VLOOKUP(容認)、既存メンテは現状維持
- 近似一致と完全一致の違いを理解する。業務はほとんど完全一致
- 近似一致を使うときは検索範囲を昇順に並べる必須ルール
#N/Aの主な原因:表記揺れ、データ型違い、完全一致と近似一致の取り違え、範囲指定ミス- IFERROR と XLOOKUP の 4 番目の引数で、見つからない場合の表示を制御できる
次のレッスンでは、データ整形の関数(TEXT・TRIM・LEFT/RIGHT/MID・文字列結合・SUBSTITUTE)を扱います。
確認クイズ
このレッスンの理解度をチェックしましょう。