XLOOKUP関数の使い方|VLOOKUPとの違いも解説
XLOOKUP関数は、VLOOKUP関数の後継として登場した検索関数です。VLOOKUPの制限を解消し、左方向への検索や複数結果の取得など、より柔軟な検索が可能になりました。Microsoft 365およびExcel 2021以降で利用できます。
この記事では、XLOOKUP関数の基本的な使い方と、VLOOKUPとの違いについて解説します。
XLOOKUP関数の基本構文
=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
引数の説明
| 引数 | 説明 | 必須/任意 |
|---|---|---|
| 検索値 | 検索する値 | 必須 |
| 検索範囲 | 検索対象の範囲(1列または1行) | 必須 |
| 戻り範囲 | 結果を返す範囲(1列または1行) | 必須 |
| 見つからない場合 | 検索値が見つからない場合に返す値 | 任意 |
| 一致モード | 0=完全一致(既定)、-1=完全一致または次に小さい値、1=完全一致または次に大きい値、2=ワイルドカード一致 | 任意 |
| 検索モード | 1=先頭から検索(既定)、-1=末尾から検索、2=昇順バイナリ検索、-2=降順バイナリ検索 | 任意 |
VLOOKUPと異なり、検索範囲と戻り範囲を別々に指定するため、列番号を数える必要がありません。
VLOOKUPとの主な違い
| 機能 | VLOOKUP | XLOOKUP |
|---|---|---|
| 検索方向 | 右方向のみ | 左右どちらも可 |
| 既定の一致モード | 近似一致 | 完全一致 |
| エラー時の代替値 | IFERROR関数が必要 | 第4引数で指定可 |
| 列番号の指定 | 数値で指定 | 不要(戻り範囲で指定) |
| 列の挿入・削除への耐性 | 弱い | 強い |
| 複数列の結果取得 | 不可 | 可能 |
実践例1:基本的な検索
商品マスタから商品コードで商品名を検索する基本的な例です。
| 商品コード | 商品名 | 単価 |
|---|---|---|
| A001 | ノートPC | 89000 |
| A002 | マウス | 2500 |
| A003 | キーボード | 5800 |
=XLOOKUP(E2, A2:A4, B2:B4)
検索範囲(A2:A4)と戻り範囲(B2:B4)を個別に指定します。VLOOKUPのように列番号を数える必要がなく、直感的に記述できます。
実践例2:見つからない場合の処理
VLOOKUPではIFERROR関数を別途使う必要がありましたが、XLOOKUPでは第4引数で直接指定できます。
=XLOOKUP(E2, A2:A4, B2:B4, "該当なし")
検索値が見つからない場合に「該当なし」と表示されます。数式がシンプルになり、可読性が向上します。
実践例3:左方向への検索
VLOOKUPでは不可能だった、検索列より左側のデータを取得する例です。
以下のように、商品名がA列、商品コードがB列にある場合を考えます。
| 商品名 | 商品コード | 単価 |
|---|---|---|
| ノートPC | A001 | 89000 |
| マウス | A002 | 2500 |
商品コードから商品名を取得する場合、VLOOKUPでは範囲の左端列にコードがないため使えません。XLOOKUPなら問題なく検索できます。
=XLOOKUP(E2, B2:B3, A2:A3, "該当なし")
検索範囲と戻り範囲が独立しているため、方向の制約がありません。
実践例4:複数列の結果を一度に取得する
XLOOKUPでは、戻り範囲を複数列に設定することで、一度に複数のデータを取得できます。
=XLOOKUP(E2, A2:A4, B2:C4, "該当なし")
この数式は、商品名と単価の両方を一度に返します。数式を入力したセルとその右隣のセルに結果がスピルされます。
実践例5:末尾から検索する
同じ検索値が複数ある場合、最後に一致したデータを取得したいことがあります。第6引数を-1に設定します。
=XLOOKUP(E2, A2:A10, B2:B10, "該当なし", 0, -1)
売上履歴などで、同じ商品コードの最新レコードを取得する場合に便利です。
よくあるエラーと対処法
#N/Aエラー
検索値が見つからない場合に発生します。第4引数を設定することで回避できます。見つからない場合の値を設定していない場合は、データの存在確認や全角半角の統一を行ってください。
#VALUE!エラー
検索範囲と戻り範囲のサイズが異なる場合に発生します。行数(または列数)が一致しているか確認してください。
# 正しい例:どちらも3行
=XLOOKUP(E2, A2:A4, B2:B4)
# エラーになる例:行数が異なる
=XLOOKUP(E2, A2:A4, B2:B5)
#NAME?エラー
XLOOKUPがサポートされていないバージョンのExcelで使用した場合に発生します。Excel 2019以前のバージョンでは使用できません。Microsoft 365またはExcel 2021へのアップグレードを検討してください。
XLOOKUPとVLOOKUPの使い分け
XLOOKUPが使える環境であれば、基本的にXLOOKUPを使うことを推奨します。ただし、以下の場合はVLOOKUPを選択する理由があります。
- ファイルの共有先がExcel 2019以前を使用している場合: XLOOKUPが使えないため、VLOOKUPで記述する必要がある
- 既存のファイルにVLOOKUPが多用されている場合: 統一性のためにVLOOKUPを継続使用する判断もある
- 学習コストの観点: チーム全体がVLOOKUPに慣れている場合、移行のタイミングを検討する
Google スプレッドシートでの互換性
Google スプレッドシートでもXLOOKUP関数は利用可能です。基本的な構文と動作はExcelと同じですので、どちらの環境でも同様に使えます。
まとめ
XLOOKUP関数は、VLOOKUPの制限を解消した検索関数です。
- 左方向の検索ができる
- 第4引数でエラー時の代替値を直接指定できる
- 列番号が不要で、列の挿入・削除に強い
- 既定が完全一致なので、FALSEの指定忘れによるミスがない
新しいファイルを作成する場合はXLOOKUPを積極的に使い、VLOOKUPとの互換性が必要な場合のみVLOOKUPを選択するのがよいでしょう。