Excel関数 逆引き集 | 条件付き参照 → IF+XLOOKUP

Excel VBA Excel
スポンサーリンク

概要

「条件を満たすときだけ XLOOKUP を実行したい」
「入力が空欄のときは検索しないようにしたい」
「特定条件のときだけ別のマスタを参照したい」

こうした“条件付き参照”を実現する最強の組み合わせが
IF + XLOOKUP です。

IF で条件を判定し、
その条件が TRUE のときだけ XLOOKUP を動かす、
FALSE のときは空欄や別の値を返す、
という構造が Excel 実務で非常によく使われます。


IF+XLOOKUP の基本形

条件を満たすときだけ XLOOKUP を実行する

最も基本的なテンプレートはこれです。

=IF(条件, XLOOKUP(検索値, 検索範囲, 戻り範囲, "未登録"), "")

意味をかみ砕くと:

  • 条件が TRUE → XLOOKUP を実行
  • 条件が FALSE → 空欄(””)を返す

実務では「検索値が空欄なら検索しない」という使い方が圧倒的に多いです。


入力が空欄のときは検索しない(最もよく使うパターン)

例:E2 に商品コードが入ったときだけ商品名を表示したい

A2:A100:商品コード
B2:B100:商品名
E2:検索したい商品コード
F2:商品名を表示したいセル

F2 に次の式を書きます。

=IF(E2="","",
    XLOOKUP(E2, A2:A100, B2:B100, "未登録"))

動き:

  • E2 が空欄 → “”(何も表示しない)
  • E2 に値がある → XLOOKUP で商品名を取得

これにより、空欄の行に「未登録」などがズラッと並ぶのを防げます。


条件によって参照先を切り替える(IF でマスタを分岐)

例:商品区分によって参照するマスタを変える

前提:

  • 商品区分が「A」なら Aマスタを参照
  • 商品区分が「B」なら Bマスタを参照

Aマスタ:Sheet「Aマスタ」
Bマスタ:Sheet「Bマスタ」

E2:商品コード
D2:商品区分(A または B)
F2:商品名を表示したいセル

=IF(D2="A",
     XLOOKUP(E2, Aマスタ!A2:A100, Aマスタ!B2:B100, "未登録"),
     XLOOKUP(E2, Bマスタ!A2:A100, Bマスタ!B2:B100, "未登録"))

条件に応じて XLOOKUP の参照先を切り替える典型パターンです。


条件を満たすときだけ別の値を返す(XLOOKUP を IF の中に入れる)

例:金額が 10,000 以上のときだけ商品名を表示

A2:A100:商品コード
B2:B100:商品名
C2:C100:金額
E2:検索したい商品コード
F2:商品名を表示したいセル

=IF(XLOOKUP(E2, A2:A100, C2:C100)>=10000,
     XLOOKUP(E2, A2:A100, B2:B100, "未登録"),
     "")

流れ:

  1. XLOOKUP で金額を取得
  2. その金額が 10000 以上なら商品名を返す
  3. それ以外は空欄

「検索結果を条件に使う」パターンです。


条件が FALSE のときに別の XLOOKUP を実行する

例:通常マスタにない場合は予備マスタを参照する

E2:商品コード
通常マスタ:A2:B100
予備マスタ:D2:E100

=IF(ISNA(XLOOKUP(E2, A2:A100, B2:B100)),
     XLOOKUP(E2, D2:D100, E2:E100, "未登録"),
     XLOOKUP(E2, A2:A100, B2:B100))

意味:

  • 通常マスタにない(=ISNA) → 予備マスタを参照
  • 通常マスタにある → 通常マスタを参照

「優先マスタ → 予備マスタ」の切り替えができます。


IF+XLOOKUP のテンプレート集

入力が空欄なら検索しない

=IF(検索値セル="","", XLOOKUP(...))

条件に応じて参照先を切り替える

=IF(条件, XLOOKUP(...Aマスタ...), XLOOKUP(...Bマスタ...))

検索結果を条件に使う

=IF(XLOOKUP(...評価列...)>=基準値, XLOOKUP(...戻り列...), "")

通常マスタにないときだけ予備マスタを参照

=IF(ISNA(XLOOKUP(...通常...)),
     XLOOKUP(...予備...),
     XLOOKUP(...通常...))

よくあるつまずきと対策

XLOOKUP の検索範囲と戻り範囲の行数がズレている

NG:

  • 検索範囲:A2:A100
  • 戻り範囲:B3:B100

→ 行がズレて結果が壊れる

必ず 同じ行から同じ行まで に揃える。

IF の条件に XLOOKUP を直接入れるときは、エラー処理が必要

例:

=IF(XLOOKUP(E2, A2:A100, C2:C100)>=10000, …)

E2 が未登録の場合、XLOOKUP が #N/A になり、IF がエラーになります。

→ ISNA や IFERROR を併用する。


例題

問題1

E2 に商品コードが入力されたときだけ、A2:A100 のコードから B2:B100 の商品名を検索し、F2 に表示する式を書いてください(空欄なら何も表示しない)。

=IF(E2="","", XLOOKUP(E2, A2:A100, B2:B100, "未登録"))

問題2

D2 に商品区分(A または B)が入っています。
区分が A のときは Aマスタ、B のときは Bマスタから商品名を検索し、F2 に表示する式を書いてください。

=IF(D2="A",
     XLOOKUP(E2, Aマスタ!A2:A100, Aマスタ!B2:B100, "未登録"),
     XLOOKUP(E2, Bマスタ!A2:A100, Bマスタ!B2:B100, "未登録"))

問題3

E2 の商品コードに対応する金額(C列)が 10000 以上のときだけ、商品名(B列)を F2 に表示する式を書いてください。

=IF(XLOOKUP(E2, A2:A100, C2:C100)>=10000,
     XLOOKUP(E2, A2:A100, B2:B100, "未登録"),
     "")

問題4

通常マスタ(A2:B100)に存在しない商品コードの場合だけ、予備マスタ(D2:E100)を参照して商品名を返す式を F2 に書いてください。

=IF(ISNA(XLOOKUP(E2, A2:A100, B2:B100)),
     XLOOKUP(E2, D2:D100, E2:E100, "未登録"),
     XLOOKUP(E2, A2:A100, B2:B100))

問題5

E2 が空欄なら空欄、入力されている場合は A2:A100 のコードから C2:C100 の担当者名を検索して F2 に表示する式を書いてください。

=IF(E2="","", XLOOKUP(E2, A2:A100, C2:C100, "未登録"))

まとめ

IF+XLOOKUP は、実務で最も使われる“条件付き参照”の王道パターンです。

覚えるべき型は次の 4 つ。

① 入力が空欄なら検索しない

=IF(検索値="", "", XLOOKUP(...))

② 条件によって参照先を切り替える

=IF(条件, XLOOKUP(...A...), XLOOKUP(...B...))

③ 検索結果を条件に使う

=IF(XLOOKUP(...評価...)>=基準, XLOOKUP(...戻り...), "")

④ 通常マスタ → 予備マスタの切り替え

=IF(ISNA(XLOOKUP(...通常...)), XLOOKUP(...予備...), XLOOKUP(...通常...))

この4つを使いこなせば、
「条件によって参照先を変える」「空欄時は検索しない」など、
実務で頻発する“条件付き参照”をすべてカバーできます。

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