概要
「条件を満たすときだけ 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, "未登録"),
"")
流れ:
- XLOOKUP で金額を取得
- その金額が 10000 以上なら商品名を返す
- それ以外は空欄
「検索結果を条件に使う」パターンです。
条件が 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つを使いこなせば、
「条件によって参照先を変える」「空欄時は検索しない」など、
実務で頻発する“条件付き参照”をすべてカバーできます。
