Excel関数 逆引き集 | 検索失敗時の既定値 → XLOOKUP

Excel
スポンサーリンク

概要

「コードが見つからなかったときにだけ『未登録』と表示したい」
「検索失敗の #N/A を、そのまま見せずに 0 や空白にしたい」

こういう “検索に失敗したときの既定値” を、関数そのものに内蔵できるのが
XLOOKUP(エックスルックアップ) の大きな強みです。

VLOOKUP のように IFERROR で包まなくても、
XLOOKUP の引数の中で「見つからないときの値」を直接指定できます。

ここでは、検索失敗時の既定値にフォーカスして、XLOOKUP をかみ砕いて解説します。


XLOOKUP の基本形

基本の書式

XLOOKUP の代表的な形はこうです。

=XLOOKUP(検索値, 検索範囲, 戻り範囲, 見つからないときの値)

それぞれの意味はこうです。

検索値
探したい値(例:商品コード、社員番号など)

検索範囲
検索値を探しに行く範囲(例:コード一覧の列)

戻り範囲
見つかったときに返してほしい値が入っている範囲(例:商品名の列)

見つからないときの値
検索に失敗したとき(通常なら #N/A)に代わりに返す値

検索失敗時の既定値を設定したいときは、
この「見つからないときの値」を活用します。


検索失敗時に「未登録」と表示する

商品コードが見つからないときの既定値

前提:

A2:検索したい商品コード
D列:商品コード一覧(D2:D100)
E列:商品名(E2:E100)

XLOOKUP の基本形はこうです。

=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, "未登録")

動きは次の通りです。

A2 が D2:D100 のどこかで見つかった場合
対応する E列の「商品名」を返す

A2 が D2:D100 に見つからなかった場合
「未登録」と表示(本来は #N/A になる場面)

VLOOKUP なら IFERROR との組み合わせが必要でしたが、
XLOOKUP なら 1 行の中で「見つからないときの既定値」まで完結できます。


検索失敗時に空白や 0 を返す

空白にして「存在しないだけ」の行を目立たせない

検索に失敗したときは、
エラーではなく単に何も表示したくない場面も多いです。

=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, "")

見つからないときは空白が返るので、
画面が #N/A だらけになるのを防げます。

0 を返して集計に使いやすくする

「見つからないときは 0」として扱いたいなら、こうします。

=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, 0)

例えば、ポイント残高・在庫数など、
値が見つからない場合は「0」として計算に含めたいときに便利です。


IFERROR 版との違いとメリット

VLOOKUP+IFERROR との比較

VLOOKUP だと、検索失敗時に既定値を返したいときはこう書きます。

=IFERROR(VLOOKUP(A2, $D$2:$E$100, 2, FALSE), "未登録")

XLOOKUP なら、同じことをシンプルに書けます。

=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, "未登録")

メリットは次のような点です。

IFERROR を二重に書かなくてよい
「検索失敗だけ」を自然に扱える(書式ミスなどその他エラーは別)
数式の読みやすさが上がる

検索失敗時の既定値という観点では、
XLOOKUP の第4引数に「見つからないときの値」を素直に書けるのが大きな利点です。


検索失敗時に別の文字列や計算結果を返す

メッセージを変える

「未登録」以外にも、好きなメッセージを返せます。

=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, "コード不明")
=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, "該当データなし")

社内ルールに合わせた文言にしておくと、
見る人にとっても分かりやすくなります。

既定値として「別セルの値」を返す

「見つからないときは、F2 に入っている共通値を返す」
ということも可能です。

=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, $F$2)

第4引数には、
文字列だけでなくセル参照や計算式も書けます。


例題

問題1

A2 に商品コードが入っています。
D2:D100 に商品コード、E2:E100 に商品名が入っているとき、
XLOOKUP を使って商品名を取得し、
見つからなかった場合は「未登録」と表示する式を書いてください。

=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, "未登録")

問題2

A2 の社員番号を、D2:D200 の社員番号一覧から探し、
E2:E200 の氏名を返したいとします。
見つからなかった場合は空白(””)を返す XLOOKUP の式を書いてください。

=XLOOKUP(A2, $D$2:$D$200, $E$2:$E$200, "")

問題3

A2 の商品コードを D2:D100 から探し、F2:F100 の在庫数を返します。
検索に失敗したときは在庫 0 とみなしたいです。
XLOOKUP を使って、そのような式を書いてください。

=XLOOKUP(A2, $D$2:$D$100, $F$2:$F$100, 0)

問題4

A2 の得意先コードを D2:D100 から探し、E2:E100 の得意先名を返します。
見つからなかったときは「コード不明」と表示したいです。
XLOOKUP の式を書いてください。

=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, "コード不明")

問題5

A2 の商品コードを D2:D100 から探し、E2:E100 の商品名を返します。
見つからなかったときは、セル G2 に入っている文字列を既定値として返したいです。
XLOOKUP の式を書いてください。

=XLOOKUP(A2, $D$2:$D$100, $E$2:$E$100, $G$2)

まとめ

XLOOKUP で「検索失敗時の既定値」を扱うときのポイントは、たった 1 つです。

第4引数「見つからないときの値」を必ずセットすること

型はこの形を覚えておけば十分です。

=XLOOKUP(検索値, 検索範囲, 戻り範囲, 見つからないときの値)

VLOOKUP+IFERROR のように二重構造にしなくても、
XLOOKUP 1 本で「検索」「結果」「失敗時の既定値」まで完結できます。

普段 VLOOKUP を使っている検索処理を、
一度 XLOOKUP に置き換えてみてください。
検索失敗時の扱いが、かなり素直で読みやすくなるはずです。

タイトルとURLをコピーしました