
XLOOKUP(エックスルックアップ)とは?
XLOOKUPは、Excelのデータ検索関数のひとつです。長年定番だったVLOOKUP(縦方向の検索)やHLOOKUP(横方向の検索)の弱点を解消した「後継関数」として登場しました。
VLOOKUPに慣れ親しんだ方ほど最初は違和感があるかもしれませんが、いまや新しい数式を書くなら第一候補にしたい関数です。これからExcelを覚える方は、XLOOKUPから入っても問題ありません。ぜひマスターしておきましょう。一度覚えたら、、もう戻れません。
XLOOKUPの主な特徴
- VLOOKUPの弱点を克服:検索列より左側にあるデータも取得できます(VLOOKUPでは不可能でした)。
- 縦・横どちらの検索も可能:HLOOKUPを使い分ける必要がなくなります(HLOOKUPは「横方向=水平」に検索する関数。VLOOKUPの横方向版にあたります)。
- 列番号の指定が不要:戻り値の範囲を直接指定するため、列の挿入・削除で数式が壊れにくくなります。
- 「見つからない場合」を引数で指定できる:エラー時の表示を関数内で設定できます。
- 検索方向・一致方法を細かく指定できる:完全一致・近似一致・末尾からの検索などを選べます。
- 既定が「完全一致」:VLOOKUPで多発した「第4引数の指定漏れによる近似一致の事故」が起きません。
【重要】使えるExcelのバージョンに注意
XLOOKUPはすべてのExcelで使えるわけではありません。「入力しても候補に出てこない」「#NAME? エラーになる」という場合は、バージョンが対応していない可能性が高いです。
| 環境 | XLOOKUPの利用 |
|---|---|
| Microsoft 365(旧Office 365) | 利用可 |
| Excel 2021・Excel 2024(永続ライセンス) | 利用可 |
| Excel for the web(Web版) | 基本は利用可(機能差が出る場合あり) |
| Excel 2019・2016 以前 | 利用不可 |
確認方法はかんたんです。セルに =XLOOKUP( と入力してみて、候補にXLOOKUPが出てくれば使えます。出てこない・#NAME? になる場合は、そのExcelでは使えません。Excel 2019以前では、従来どおりVLOOKUPやINDEX+MATCHで対応することになります。
XLOOKUPの基本構文
まずは基本の書き方を覚えましょう。
=XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])
後半の3つ([ ] で囲んだ引数)は省略可能です。日常業務では、はじめの3つだけで十分使えます。
- 検索値:探したい値(例:商品コード、社員IDなど)
- 検索範囲:検索の対象にするセル範囲(例:A列の商品コード)
- 戻り範囲:結果として取り出したいセル範囲(例:B列の商品名)
- [見つからない場合]:データが見つからなかったときに表示する値(省略可)
- [一致モード]:完全一致・近似一致・ワイルドカードなどの指定(省略可。既定は完全一致)
- [検索モード]:検索する向き(先頭から/末尾から)の指定(省略可。既定は先頭から)
なお、下から検索することもできます。
参考記事:VLOOKUPで下から検索する方法|XLOOKUPで最後の一致を取得
XLOOKUPの基本的な使い方
例1:商品コードから商品名を検索する
以下のような商品リストがあるとします(A列=商品コード、B列=商品名、C列=価格)。
| A列:商品コード | B列:商品名 | C列:価格 |
|---|---|---|
| A001 | りんご | 100 |
| A002 | バナナ | 150 |
| A003 | みかん | 200 |
「A002(バナナ)」の商品名を取得したい場合、次のように書きます。
=XLOOKUP("A002", A2:A4, B2:B4)
結果はセルに「バナナ」と表示されます。VLOOKUPのように「左から数えて何列目か」を指定する必要がなく、戻り範囲(B2:B4)を直接指定するだけなのがポイントです。
例2:見つからないときの表示を指定する(IFERRORが不要に)
存在しない「A005」を検索すると、通常は #N/A エラーが出ます。第4引数に表示したい文字を指定しておけば、エラーの代わりにその文字が表示されます。
=XLOOKUP("A005", A2:A4, B2:B4, "データなし")
これで、見つからない場合は「データなし」と表示されます。VLOOKUPでは IFERROR 関数で全体を囲む必要がありましたが、XLOOKUPなら関数内で完結します。
ただし、第4引数が拾ってくれるのは「検索値が見つからなかったとき」だけです。範囲指定のミスなどで起こる #REF! や #VALUE! といった構造的なエラーは拾えません。心配な場合は、これまでどおり IFERROR で囲んでおくと安心です。
例3:検索列の「左側」のデータを取得する(VLOOKUPでは不可)
次のように、商品名が左(A列)、商品コードが右(B列)にある表を考えます。
| A列:商品名 | B列:商品コード |
|---|---|
| りんご | A001 |
| バナナ | A002 |
| みかん | A003 |
「A002」という商品コードから、対応する商品名を取得したい場合は次のように書きます。
=XLOOKUP("A002", B2:B4, A2:A4)
これで「バナナ」が取得できます。検索範囲(B列)より左にあるA列を戻り範囲に指定できるのがXLOOKUPの強みです。VLOOKUPでは列の並べ替えやINDEX+MATCHが必要だった場面を、ひとつの数式でシンプルに書けます。
スピル機能で複数列を一括取得する
XLOOKUPはスピル機能(あふれ出し)に対応しています。これにより、1つの数式で複数の列の値をまとめて取得し、隣のセルに自動で展開できます。
VLOOKUPとの違い
| 項目 | XLOOKUP | VLOOKUP |
|---|---|---|
| 複数列の同時取得 | 可能(戻り範囲に複数列を指定) | 不可(1つの値のみ) |
| 結果の展開 | 自動でスピル | 列ごとに数式を作る必要あり |
| 列の挿入・削除への強さ | 壊れにくい | 列番号がずれると壊れやすい |
スピルの使用例
たとえば、次のような社員一覧があるとします(A列=社員ID、B列=名前、C列=部署)。
| A列:社員ID | B列:名前 | C列:部署 |
|---|---|---|
| 101 | 田中 太郎 | 営業 |
| 102 | 佐藤 花子 | 総務 |
| 103 | 鈴木 一郎 | IT |
「社員ID 101 の名前と部署をまとめて取得したい」という場合、戻り範囲に名前と部署の2列(B2:C4)を指定します。
=XLOOKUP(101, A2:A4, B2:C4)
すると、B2:C4 の範囲から「名前」と「部署」の2つの情報が、数式を入れたセルとその右隣のセルに自動で展開されます。手動でコピーする必要がなく、作業効率が上がります。
※スピルした結果は右側のセルにも書き込まれます。展開先のセルにデータが入っていると #SPILL! エラーになるので、右側を空けておきましょう。
一致モード・検索モードを使いこなす(応用)
4番目以降の引数は省略可能ですが、使いこなすとXLOOKUPの幅が大きく広がります。実務でよく使う2つを押さえておきましょう。
一致モード(第5引数)
検索値とどう一致させるかを指定します。省略すると「0(完全一致)」になります。
| 値 | 意味 |
|---|---|
| 0 | 完全一致(既定)。見つからない場合は #N/A |
| -1 | 完全一致。なければ「検索値以下で最も大きい値」を返す |
| 1 | 完全一致。なければ「検索値以上で最も小さい値」を返す |
| 2 | ワイルドカード(*、?、~)を使った検索 |
| 3 | 正規表現を使った検索(後述・Microsoft 365のみ) |
近似一致が役立つ場面:成績ランクや料金表など「○点以上なら△」といった段階的な判定では -1 が便利です。たとえば下限値(60→C、70→B、80→A…)を昇順に並べた表で、
=XLOOKUP(75, 下限の範囲, ランクの範囲, "範囲外", -1)
とすれば、75点にぴったりの値がなくても「75以下で最大の下限=70」に対応する「B」を返してくれます。税率表・送料表・成績判定などに応用できます。
検索モード(第6引数)
どの向きで検索するかを指定します。省略すると「1(先頭から)」になります。
| 値 | 意味 |
|---|---|
| 1 | 先頭から末尾へ検索(既定) |
| -1 | 末尾から先頭へ検索(重複時に「最後の1件」を取得) |
| 2 / -2 | バイナリ検索(並べ替え済みデータ向け・上級者用) |
「最新のデータを取りたい」ときに -1 が便利:契約履歴や対応ログのように、新しい記録ほど下に追加されていく表では、検索モードに -1 を指定すると一番下(=最新)の該当行を取得できます。
=XLOOKUP(検索値, A2:A100, C2:C100, "未登録", 0, -1)
同じ顧客IDや商品名が複数あっても、最後に出てくるものを返せます。VLOOKUPでは難しかった処理です。
【最新】正規表現モード(一致モード「3」)
2024年から2025年にかけて、XLOOKUP・XMATCHに正規表現モードが追加されました。一致モードに 3 を指定すると、検索値を正規表現として扱えます。ワイルドカードより複雑なあいまい検索や、「A または B のいずれかを含む」といった条件指定が可能です。
たとえば「BLND または NATP のいずれか」を検索したい場合は、|(パイプ)で区切って次のように書きます。
=XLOOKUP("BLND|NATP", 検索範囲, 戻り範囲, , 3)
ただし、この機能はMicrosoft 365でのみ利用可能です(永続版のExcel 2021/2024には含まれません)。また、正規表現は「指定した文字を含むだけで一致」とみなすため、完全一致にしたい場合は ^ と $ で囲むなどの注意が必要です。「そういうモードがある」という程度に押さえておけば十分です。
使う前に知っておきたい注意点
- 古いバージョンとファイルを共有するとき:相手がExcel 2019以前を使っていると、XLOOKUPの数式は計算できず
#NAME?になります。社外や複数部署とファイルを共有する場合は、相手のバージョンを確認しておくと安心です。 - 該当が複数あっても返るのは1件だけ:XLOOKUPは原則「最初に一致した1件」(または検索モード -1 で「最後の1件」)を返します。条件に合うものをすべて一覧で取り出したい場合は、Microsoft 365/Excel 2021以降で使える
FILTER関数が向いています。 - 複数条件で絞り込みたいとき:「&」で検索キーを結合する方法などがあります。詳しくは下記の関連記事で解説しています。
まとめ
XLOOKUPのポイントを整理します。
- VLOOKUP・HLOOKUPの弱点を解消した後継関数。新しい数式はXLOOKUPで書くのがおすすめ。
- 検索列の左側のデータも取得でき、列の挿入・削除にも強い。
- 列番号が不要で、既定が完全一致だから事故が起きにくい。
- 「見つからない場合」を引数で指定でき、エラー処理がシンプル。
- スピル機能で複数列を一括取得できる。
- 一致モード・検索モードを使えば、近似一致(料金表・成績判定)や最新データの取得も思いのまま。
- 利用にはMicrosoft 365 / Excel 2021以降が必要。Excel 2019以前では使えない。
VLOOKUPに慣れた方も、まずは普段の検索をXLOOKUPに置き換えるところから始めてみてください。きっと手放せなくなりますよ。
さらに詳しくなりたい方は、こちらの記事もどうぞ。












コメント