XLOOKUP関数について①
前回までで VLOOKUP / HLOOKUP を学びました。
そして 050 の最後でお伝えした通り、2026年現在では XLOOKUP(エックスルックアップ)関数 が主役です。
理屈はいろいろありますが、まずは いきなり使ってみる のが、XLOOKUP の良さを一番早く分かる方法です。早速やってみましょう。
XLOOKUPの構文(とりあえずシンプル版)
=XLOOKUP(検索値, 検索範囲, 戻り範囲)
引数は3つだけ。
- 検索値:何を探すか
- 検索範囲:どの列(または行)から探すか
- 戻り範囲:どの列(または行)の値を返すか
── もう、これだけで分かるんじゃないでしょうか。
「何を、どこから探して、どこの値を返すか」。日本語で読むのと、ほぼそのままです。
実際に使ってみる
商品マスタから商品名を引っ張ってきます。
:::excel
A1=商品コード
B1=商品名
C1=単価
A2=P001
B2=コーヒー
C2=400
A3=P002
B3=紅茶
C3=350
A4=P003
B4=ケーキ
C4=500
A5=P004
B5=サンドイッチ
C5=600
A6=P005
B6=パスタ
C6=900
:::
「P003 の商品名は?」を取り出してみましょう。
=XLOOKUP("P003", A:A, B:B)
結果:ケーキ
これだけです。引数3つで完結します。
VLOOKUP と比べてみる
同じことを VLOOKUP で書くと、こうでした。
=VLOOKUP("P003", A:C, 2, FALSE)
XLOOKUP の書き方と並べてみます。
=VLOOKUP("P003", A:C, 2, FALSE)
=XLOOKUP("P003", A:A, B:B)
XLOOKUP は、
- 列番号を数えなくていい(「2列目」と数えなくて済む)
- 検索方法(FALSE)が要らない(完全一致がデフォルト)
- 検索範囲と戻り範囲を別々に指定する(直感的)
VLOOKUP で「列番号は範囲の左端から数えて何列目か……」と頭を悩ませたあの苦労、もう必要ありません。「探す列」と「取りたい列」を、それぞれそのまま指定する だけ。
これが XLOOKUP 最大の解放感です。列番号を数えなくていい。この関数を考えた人は天才かと思いました。
単価も同じように取れる
商品名だけでなく、単価を取りたいときは、戻り範囲を C列 にするだけ。
=XLOOKUP("P003", A:A, C:C)
結果:500
VLOOKUP のように「列番号を 2 から 3 に変える」のではなく、戻り範囲そのものを C列 に切り替える ── この感覚のほうが、頭の中の動きと一致します。
見つからないと #N/A
XLOOKUP も VLOOKUP と同じく、検索値が見つからないと #N/A エラーが返ります。
=XLOOKUP("P999", A:A, B:B) ← P999 はマスタにない
→ #N/A
エラーが出るところまでは同じ。ただし、ここから先が違います。
第4引数:見つからないときの代わりの値
XLOOKUP には、4つ目の引数で「見つからないときに返す値」を直接指定できる 機能があります。
=XLOOKUP(検索値, 検索範囲, 戻り範囲, 見つからないときの値)
これで、
=XLOOKUP("P999", A:A, B:B, "未登録")
P999 が見つからなければ、「未登録」が返る。#N/A は出ません。
VLOOKUP のときは、レッスン047で学んだ IFERROR で 外から包んで 処理していました。
=IFERROR(VLOOKUP("P999", A:C, 2, FALSE), "未登録")
XLOOKUP なら、関数の中だけで完結 します。
=XLOOKUP("P999", A:A, B:B, "未登録")
IFERROR を使わなくていい、というのも XLOOKUP のメリットです。
注意点:空白セルは「0」になる
ひとつだけ、注意点があります。
検索値が見つかっても、戻り範囲のセルが空白だった場合、XLOOKUP は「0」を返してきます。
たとえば、商品コードはマスタにあるけれど、その商品の 単価が未入力(空白) だったとします。
=XLOOKUP("P003", A:A, C:C)
C3 が空白だと、結果は 0。「空白」ではなく「0」が出ます。
ここは XLOOKUP の仕様で、第4引数では回避できません。「未登録ではなく、未入力」のケースは、空白として扱われずに 0 になってしまうのです。
もし「空白だったら空白を返してほしい」というシーンがあれば、IF関数を組み合わせて回避 してください。
=IF(XLOOKUP("P003",A:A,C:C)=0, "", XLOOKUP("P003",A:A,C:C))
少し長くなりますが、これで「0 のときは空白に置き換える」処理ができます。
実務ではマスタを「空白なし」で整備するのが基本なので、0 が返ってきたら「未入力かも」と気づくサイン として使うのも、ひとつの考え方です。
まとめ
- XLOOKUP は VLOOKUP / HLOOKUP の 新しい後継
- 構文:=XLOOKUP(検索値, 検索範囲, 戻り範囲)
- 列番号を数えなくていい(最大の解放感)
- 完全一致がデフォルト(FALSE 不要)
- 見つからないと
#N/A、第4引数で代わりの値を指定 できる - 空白セルは 0 が返る → 必要なら IF で回避
次回は XLOOKUP のさらに便利な使い方。ランク判定(前回 TRUE でやったやつ)や、HLOOKUP の代わり として使う方法を見ていきます。
ショートカット
※このレッスンに対応するショートカットはありません。