※本ページはプロモーション(広告)を含みます。

ITスキル・業務自動化

ExcelのXLOOKUP関数の使い方とVLOOKUPからの移行手順|構文・エラー対処法まで解説

ExcelのXLOOKUP関数の基本的な使い方から、VLOOKUP関数との違い、書き換え方法、エラー発生時の対処法まで具体的に解説します。表検索の効率化とトラブル防止に役立つ知識が身につきます。

Excelで別の表からデータを検索して取得するとき、従来はVLOOKUP関数が広く使われてきました。しかし、Office 365やExcel 2021以降で導入された「XLOOKUP(エックスルックアップ)関数」を使えば、VLOOKUPで生じていた多くの制約やエラーの手間を解消できます。

「VLOOKUPの使い方に慣れているけれど、XLOOKUPに変えるメリットはあるのか」「構文が新しくて書き方がわからない」「エラーが出たときにどう対処すればいいか分からない」と悩む方も多いでしょう。

この記事では、XLOOKUP関数の基本構文から具体的な使用例、VLOOKUPからのスムーズな書き換え手順、エラーが出たときの原因と対処法までを詳しく解説します。

Excelスキルの学習順序や他機能との組み合わせについて全体像を確認したい方は、Excelスキルの全体像と学ぶ順番をあわせてご覧ください。


XLOOKUP関数とは?VLOOKUPとの違いと比較

XLOOKUP関数は、指定した値を表から検索し、対応する列や行からデータを取り出すための関数です。VLOOKUP関数の後継として設計されており、機能と操作性の両面で大幅に進化しています。

VLOOKUPとXLOOKUPの機能比較

まずは両者の主な違いを整理します。

比較項目 VLOOKUP関数 XLOOKUP関数
検索方向 縦方向(右側の列のみ取得可) 縦方向・横方向(左側・上側のデータも取得可)
戻り値の指定方法 範囲の左から数えた「列番号」(数値) 取得したい「戻り配列」(セル範囲)
列の挿入・削除 列の順番が変わると誤ったデータを参照する 参照範囲が自動追従するため影響を受けない
エラー処理 別途 IFERROR 関数との組み合わせが必要 第4引数でエラー時の表示文字列を指定可能
検索モードのデフォルト 近似一致(TRUE)※実務ではFALSE指定が必須 完全一致(0)※指定を省略しても完全一致
処理速度・動作 範囲全体を指定するため重くなりやすい 必要な列のみを参照するため計算が軽くなりやすい

XLOOKUPを使う3つのメリット

1. 左側の列にあるデータを取得できる

VLOOKUP関数では「検索キーとなる列」よりも左側にある列のデータを取り出すことができませんでした。そのため、元の表の列を並べ替えるか、INDEX関数とMATCH関数を組み合わせる必要がありました。XLOOKUP関数では、検索範囲と戻り値の範囲を個別に指定できるため、検索列の左右どちらにあるデータでも取得できます。

2. 表の列挿入・削除で計算結果が壊れない

VLOOKUP関数では「左から3列目」のように列番号を数値で指定していたため、元の表に新しい列を挿入すると、指定した列番号と実際の列がずれて誤ったデータが表示される問題がありました。XLOOKUP関数は範囲(例:C2:C100)を直接指定するため、列の追加や削除を行っても参照が自動的に追従し、計算結果が崩れません。

3. 関数の記述がシンプルになる

VLOOKUP関数で検索値が見つからない場合に空白や任意のテキストを表示させるには、IFERROR(VLOOKUP(...), "該当なし") のように関数を二重にする必要がありました。XLOOKUP関数には標準で「見つからない場合」を設定する引数が用意されているため、単体でエラー処理まで完結できます。また、検索形式のデフォルトが「完全一致」に設定されているため、末尾の FALSE を打ち込む手間も省けます。


XLOOKUP関数の基本構文と引数の意味

XLOOKUP関数は、最大で6つの引数(ひきすう)を設定できます。基本となるのは最初の3つの引数で、残りの3つは必要に応じて指定するオプションです。

基本構文

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

各引数の役割は以下の通りです。

引数 必須/省略 説明
検索値 必須 探したい値を指定します(セル参照、直接入力のテキストや数値)。
検索配列 必須 検索値を探す対象の範囲(1行または1列)を指定します。
戻り配列 必須 取得したいデータが入っている範囲(1行または1列)を指定します。
[見つからない場合] 省略可 該当するデータが見つからない場合に表示する値(文字列や数値)を指定します。
[一致モード] 省略可 一致の種類を指定します(0: 完全一致[既定], -1: 完全一致または小さい値, 1: 完全一致または大きい値, 2: ワイルドカード指定)。
[検索モード] 省略可 検索する順番を指定します(1: 先頭から検索[既定], -1: 末尾から検索など)。

実務の8割以上は、最初の3つ(検索値, 検索配列, 戻り配列)のみ、または第4引数(見つからない場合)までを指定すれば対応できます。


XLOOKUP関数の具体的な使用例

実際にExcelの画面でどのように入力するか、3つの代表的なパターンを使って解説します。

例1:基本の縦方向検索(商品コードから商品名を取得する)

最も頻繁に使う、商品マスタなどの表からデータを引いてくる設定です。

前提条件:

  • セル A2 に検索したい「商品コード(例:A-001)」が入力されている。
  • 商品マスタの表が シート2 の A2:B100 にあり、A列に商品コード、B列に商品名が入っている。

入力する数式:

=XLOOKUP(A2, シート2!A2:A100, シート2!B2:B100)

解説:

  • 第1引数 A2:探す値
  • 第2引数 シート2!A2:A100:商品コードが並んでいる列
  • 第3引数 シート2!B2:B100:取り出したい商品名が並んでいる列

数式を下方向へコピーする場合は、検索配列と戻り配列がずれないように、絶対参照($)を付けるか、列全体(A:A や B:B)で指定してください。

=XLOOKUP(A2, シート2!$A$2:$A$100, シート2!$B$2:$B$100)

例2:検索列の「左側」にあるデータを取得する

VLOOKUPでは不可能だった、右側の列を検索して左側の列の値を取得する例です。

前提条件:

  • セル A2 に「社員ID」を入力している。
  • 社員名簿の表で、B列に「社員ID」、A列に「氏名」が入力されている。

入力する数式:

=XLOOKUP(A2, B2:B100, A2:A100)

解説: B列(右側)から A2 のIDを探し、対応するA列(左側)の氏名をそのまま取得できます。レイアウト変更や列の入れ替えを行う必要はありません。

例3:横方向の検索(HLOOKUPの代わりとして使う)

XLOOKUP関数は、縦方向(列)だけでなく横方向(行)の検索にも対応しています。従来HLOOKUP関数を使っていた場面もすべて代替可能です。

前提条件:

  • 1行目(B1:F1)に「月(1月, 2月, 3月...)」が横に並んでいる。
  • 2行目(B2:F2)に「売上額」が横に並んでいる。
  • セル A5 に指定したい月(例:「3月」)が入力されている。

入力する数式:

=XLOOKUP(A5, B1:F1, B2:F2)

解説: 検索配列に横1行の範囲指定を行えば、自動的に横方向の検索として動作します。


VLOOKUPからXLOOKUPへの置き換え手順

既存のファイルにあるVLOOKUP関数をXLOOKUP関数に書き換える際の手順と、具体的な置き換え例を解説します。

書き換えの基本ルール

VLOOKUPの記述法をXLOOKUPの記述法へ変更する際の対応関係は以下の通りです。

【VLOOKUP関数の書き方】
=VLOOKUP(検索値, 参照範囲全体, 表示したい列番号, FALSE)

【XLOOKUP関数への置き換え】
=XLOOKUP(検索値, 検索値が入っている1列, 表示したいデータが入っている1列)

具体的な書き換え例

パターン1:標準的な完全一致検索の書き換え

書き換え前のVLOOKUP:

=VLOOKUP(A2, D2:G100, 3, FALSE)

(※D列〜G列の範囲からD列を検索し、3番目の列であるF列の値を取り出す設定)

書き換え後のXLOOKUP:

=XLOOKUP(A2, D2:D100, F2:F100)
  • 「D2:G100」という面での範囲指定を、「D2:D100」(検索列)と「F2:F100」(取得列)という2つの線に分割して指定します。
  • 末尾の FALSE は、XLOOKUPではデフォルト動作となるため入力不要です。

パターン2:IFERRORを組み合わせたエラー処理の書き換え

データが存在しない場合に #N/A エラーを出さず、「該当なし」と表示させていたケースです。

書き換え前のVLOOKUP:

=IFERROR(VLOOKUP(A2, D2:G100, 3, FALSE), "該当なし")

書き換え後のXLOOKUP:

=XLOOKUP(A2, D2:D100, F2:F100, "該当なし")
  • 第4引数に "該当なし" を直接記述することで、IFERROR 関数を取り外して全体をコンパクトに整理できます。

XLOOKUP関数でよくあるエラーの原因と対処法

XLOOKUP関数を使用していて正しく結果が表示されない場合、以下のエラーが発生している可能性が高いです。エラーごとの発生原因と解消手順を確認しましょう。

1. #N/A エラー(値が見つからない)

原因

検索配列の中に、指定した「検索値」と完全に一致するデータが存在しない場合に発生します。一見同じ文字に見えても、以下の違いがあると不一致とみなされます。

  • 余分な半角スペース・全角スペースが含まれている
  • 数値とテキスト(文字列形式の数値)のデータ型が一致していない
  • 半角カタカナと全角カタカナの違いがある

対処法

  • スペースの削除: TRIM 関数を使ってデータ内の無駄なスペースを除去します。
  • データ型の統一: 一方が数値で他方が文字列になっている場合、VALUE 関数で数値化するか、&"" で文字列化して型を合わせます。
  • 第4引数の活用: データが存在しないことが正常である場合は、第4引数に ""(空文字)や "なし" を指定してエラー表示を回避します。
    =XLOOKUP(A2, C2:C100, D2:D100, "")
    

2. #SPILL! エラー(スピル範囲の衝突)

原因

XLOOKUP関数で複数の列や行を一度に取得しようとした際、結果を出力する先のセルにすでに別の文字や数値、数式が入力されている場合に発生します。

対処法

出力先のセル範囲(数式を入力したセルの右側や下側のセル)を確認し、入力されている値やスペースを消去して空白にしてください。出力先が空き空間になれば、自動的にエラーが解消されます。

3. #VALUE! エラー(配列のサイズ不一致)

原因

第2引数の「検索配列」と第3引数の「戻り配列」の行数(または列数)が一致していない場合に発生します。

  • 誤り例:=XLOOKUP(A2, C2:C100, D2:D50) (検索配列は99行分、戻り配列は49行分で不一致)

対処法

検索配列と戻り配列の開始行・終了行をぴったり合わせるように数式を修正します。

  • 修正例:=XLOOKUP(A2, C2:C100, D2:D100)

応用機能:省略可能な引数(第4〜第6引数)の活用

XLOOKUP関数の第4〜第6引数を使いこなすと、より高度なデータ抽出が可能になります。

第4引数:[見つからない場合] のカスタマイズ

検索値が見つからなかったときの代替出力を設定できます。文字列だけでなく、別の計算式や0を指定することも可能です。

=XLOOKUP(A2, C2:C100, D2:D100, 0)

※見つからない場合に「0」を出力し、後続の計算でエラーを出さないようにする設定。

第5引数:[一致モード] でワイルドカードや近似値を使う

一致モードには以下の4つの値を設定できます。

設定値 動作
0(既定) 完全一致。見つからない場合はエラーを返す。
-1 完全一致。見つからない場合は、検索値より「小さい」次の項目を返す。
1 完全一致。見つからない場合は、検索値より「大きい」次の項目を返す。
2 ワイルドカード文字(* や ?)を使用した曖昧検索。

ワイルドカード検索の例

「株式会社」などの表記ゆれがある会社名から、部分一致で検索したい場合に活用できます。

=XLOOKUP("*"&A2&"*", C2:C100, D2:D100, "なし", 2)

※セル A2 に入っている文字を一部でも含むデータを検索します。第5引数に 2 を指定するのが必須です。

第6引数:[検索モード] で末尾(最新データ)から検索する

検索モードを使うと、データを探す方向やアルゴリズムを変更できます。

設定値 動作
1(既定) 先頭(上または左)から順に検索する。
-1 末尾(下または右)から順に逆方向に検索する。

最新の履歴データを取得する例

同じ会員IDや顧客コードの履歴が下に向かって追加されているテーブルから、「一番新しい(最新の)データ」を取得したい場合は、第6引数に -1 を指定します。

=XLOOKUP(A2, C2:C100, D2:D100, "履歴なし", 0, -1)

※表の一番下から上に向かって検索を行うため、末尾に記載された最新の取引履歴などを一発で取得できます。


業務効率化に向けた他機能・ツールとの使い分け

XLOOKUP関数は単体での検索作業を非常に強力にサポートしますが、業務データの規模や目的に応じて他のExcel機能やデジタルツールと使い分けることで、さらに作業時間を削減できます。

ピボットテーブルとの使い分け

大量のデータから特定の項目を1つずつ引き出して表を完成させる場合はXLOOKUP関数が適しています。一方で、数万行に及ぶデータから「月別・店舗別の売上合計」などを集計・分析したい場合は、関数を多数配置するよりもピボットテーブルを使うほうが処理が軽く、操作も簡単です。

ピボットテーブルの基本的な作り方や集計手順については、Excelピボットテーブルの使い方で詳しく解説しています。

生成AIを活用した関数の作成・エラー解消

複雑な条件(複数条件での検索や高度なワイルドカードの組み合わせなど)で数式が組み立てられない場合や、思わぬエラーが解消できない場合は、ChatGPTなどの生成AIを活用するのが有効です。

「ExcelでA列とB列の条件が一致したときにC列の値を取得するXLOOKUPの式を書いてください」といったプロンプト(指示文)を与えることで、正確な数式を瞬時に生成できます。AIを活用した事務作業の効率化手法は、事務作業での生成AI活用方法をご参照ください。


まとめ:XLOOKUP関数をマスターして表計算作業を効率化しよう

XLOOKUP関数は、従来のVLOOKUP関数が抱えていた「左側の検索ができない」「列挿入で式が壊れる」「エラー処理に別関数が必要」といった課題をすべて解決した優れた機能です。

最後に、実務で使う際のポイントを振り返ります。

  1. 基本は3つの引数だけ覚える: =XLOOKUP(検索値, 検索配列, 戻り配列) だけで即座に実務で利用可能。
  2. エラー処理は第4引数で完結: IFERROR を使わずに「見つからない場合」の表示を指定する。
  3. 最新データ検索は第6引数に -1: 表の末尾から逆順検索して最新レコードを取得する。

最初は慣れ親しんだVLOOKUP関数を使い続けてしまいがちですが、新しく作成するファイルや業務マニュアルでは、積極的にXLOOKUP関数へ切り替えていくことをおすすめします。一度書き方に慣れてしまえば、入力の手間削減とエラーに強いデータ構造の構築を同時に実現できます。

自分に必要な実務スキルの全体像を確認し、計画的に学習を進めたい方は、学び直し全体の進め方(ハブ記事)も参考にしながら、実用的なスキルの習得を続けていきましょう。


確認先

  • Microsoft サポート「XLOOKUP 関数」
  • Microsoft サポート「VLOOKUP 関数」
まはろRe:Skill Blog 運営者・編集責任者

約11年にわたり、大手から中堅・中小企業まで事業戦略とマーケティングの支援に携わってきました。現在は個人や中小企業の支援に軸足を移し、現場で使える学び直しの情報を発信しています。

編集方針・誤りのご指摘はこちら

あわせて読みたい