LEVEL 5 データを整理・抽出する 中級
Lesson 051

XLOOKUP関数について①

練習用Excelファイル lesson051-practice.xlsx

練習用ファイルは、パソコンからダウンロードしてください。

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 の代わり として使う方法を見ていきます。


ショートカット

※このレッスンに対応するショートカットはありません。

次のLessonへ Lesson 052 XLOOKUP関数について②