XLOOKUP関数で商品IDから商品名を検索する例
Rate this post

XLOOKUP関数とは

XLOOKUP関数は、Microsoft 365のExcelで使える新しい検索関数です。従来のVLOOKUP関数やINDEX+MATCH関数の代替として設計されており、検索値と戻り値の範囲を指定するだけなので、列番号を数える必要がありません。

たとえば「商品IDから商品名を調べる」「社員番号から部署名を取り出す」「顧客コードから担当者を引く」といった操作が、直感的な式で書けます。実務では、見積書・請求書の作成、在庫管理表の照合、名簿の検索など、検索処理のほぼすべての場面で活用できます。

XLOOKUP関数で商品IDから商品名を検索する例
商品ID「A102」から商品名を取り出す

基本的な使い方

書式は =XLOOKUP(検索値, 検索範囲, 戻り範囲) の3つが基本です。第4引数以降は省略できます。

引数の意味

  • 検索値:探したい値(例:商品ID「A102」)
  • 検索範囲:検索値を探す縦1列(または横1行)の範囲
  • 戻り範囲:見つかった位置に対応する値を取り出す範囲
  • 見つからない場合(省略可):#N/Aの代わりに表示する文字列

入力手順

  1. 結果を表示したいセルを選択する
  2. =XLOOKUP( と入力し、検索値のセルを指定する
  3. 検索範囲(ID列)をカンマで区切って指定する
  4. 戻り範囲(取り出したい列)を指定してEnterを押す

検索値・検索範囲・戻り範囲の3つだけなので、VLOOKUPの「3番目の引数に列番号を指定する」ルールを覚える必要がありません。列の間に行を挿入しても、範囲参照は自動で追従するため式が壊れません。

XLOOKUP関数の第4引数で見つからない場合の表示を指定する例
存在しないIDでも「該当なし」を表示

VLOOKUPとの主な違い

項目VLOOKUPXLOOKUP
列番号の指定必要(何列目か数える)不要(戻り範囲で直接指定)
左方向の検索不可(右側のみ)可能(左右どちらでも)
見つからない場合#N/Aエラー第4引数で任意の文字を表示
列の挿入で式が壊れる列番号がずれて壊れる範囲参照なので安全
完全一致の指定第4引数にFALSEが必要既定で完全一致

特に「左方向の検索ができる」点は大きく、ID列が右・名前列が左という表でもそのまま検索できます。これまでINDEX+MATCH関数の長い式で書いていた処理が、XLOOKUPなら1つの短い式で完結します。

一致モードと検索モード(第5・第6引数)

第5引数の一致モードでは、完全一致以外の検索も指定できます。

  • 0:完全一致(既定)
  • -1:完全一致、なければ次に小さい値
  • 1:完全一致、なければ次に大きい値
  • 2:ワイルドカード(*と?)を使った検索

たとえば「料率表で金額に応じた区分を探す」ときに-1を指定すると、上限金額を跨ぐ検索が1つの式で書けます。第6引数の検索モードでは、末尾から検索(-1)やバイナリ検索(2、-2)を指定でき、大量データの高速検索に役立ちます。

実務で役立つ活用例

例1:複数列をまとめて取り出す

戻り範囲に複数列(例:B2:D100)を指定すると、結果が横方向にスピルします。商品IDから「商品名・単価・在庫」を一度に取り出せるので、見積書の明細作成が大幅に速くなります。

例2:IFERROR関数なしでエラー処理する

VLOOKUPではIFERROR関数で包む必要があった#N/A対策も、XLOOKUPでは第4引数だけで済みます。式が短くなり、可読性も上がります。

例3:日付の範囲から該当区分を探す

一致モード-1と組み合わせると、「締切日を過ぎているか」「年齢層どの区分か」のような閾値判定を、判定表を参照する形でメンテナンスしやすく実装できます。

よくあるエラーと対処法

#N/Aエラーが出る

検索値が存在しない場合に表示されます。第4引数に「該当なし」などの文字列を指定すれば、エラーの代わりに表示を切り替えられます。

#NAME?エラーが出る

XLOOKUP関数はMicrosoft 365・Excel for web・Excel 2021以降でのみ利用できます。Excel 2019以前では代替としてINDEX+MATCH関数を使いましょう。

検索値に似た文字がヒットしない

検索値の前後に空白が入っていると一致しません。TRIM関数で空白を除去してから検索してください。また、見た目が同じ数字でも、片方が「文字列」でもう片方が「数値」の場合も一致しません。セルの書式を統一するか、VALUE関数・TEXT関数で型を合わせてください。

表の中身が変わると結果がおかしい

検索範囲を行まで含めて固定したい場合は、$付きの絶対参照(例:$A$2:$A$100)を使いましょう。テーブル機能(Ctrl+T)で表化すれば、行追加にも自動で追従します。

よくある質問

Q. XLOOKUPで該当する行をすべて取り出せますか?

A. 標準では先頭の1件だけが返ります。該当行をすべて取り出したい場合は、FILTER関数を使ってください。

Q. 大文字・小文字は区別されますか?

A. 区別されません。「ABC」と「abc」は同じ値として扱われます。区別したい場合はEXACT関数と組み合わせた配列式が必要です。

Q. スマホのExcelでも使えますか?

A. ExcelモバイルアプリとExcel for webでは利用できます。ただし、古いデスクトップ版でファイルを開くと@付きに変換される点に注意してください。

まとめ

XLOOKUP関数は、列番号不要・左方向検索OK・エラー対策も引数1つでできる、VLOOKUPの後継となる関数です。一致モードや検索モードまで含めれば、INDEX+MATCH関数で処理していた高度な検索もすべて1つの式で書けます。まだVLOOKUPの列番号ずれに悩んでいる方は、この機会に切り替えを検討してみてください。

関連記事