XLOOKUPとIFの組み合わせ|未入力・在庫数・複数条件で表示を変える

XLOOKUPとIFの組み合わせ|未入力・在庫数・複数条件で表示を変える

XLOOKUPとIFを組み合わせると、「未入力なら検索しない」「検索結果の数値で表示を変える」といった処理ができます。IFは条件分岐、XLOOKUPは表から値を探す役割です。複数条件そのものを検索したい場合とは式を分けて考えると分かりやすくなります。

この記事の基本の式
数式=IF(D2="","",XLOOKUP(D2,$A$2:$A$4,$B$2:$B$4,"該当なし"))
目次

未入力なら空白、入力したらXLOOKUPで検索する

A2:A4に商品名、B2:B4に在庫数、D2に検索したい商品名を入力する例です。E2へ次の式を入力します。

E2に入力:未入力なら空白、入力したらXLOOKUPで検索する
数式=IF(D2="","",XLOOKUP(D2,$A$2:$A$4,$B$2:$B$4,"該当なし"))
ひとことでD2が空なら何も表示せず、商品名が入ったら在庫数を探す
D2=""
検索する商品名(D2)が空白かどうかを調べます
""
空白のときは、何も表示しません。IFがないと、空白のまま検索して、意図しないデータを拾うことがあります
XLOOKUP(D2,$A$2:$A$4,$B$2:$B$4,"該当なし")
商品名が入っているとき、在庫数を探します。登録がなければ「該当なし」を表示します
データの流れ
① D2が空かどうかを調べる
D2空D2商品A
▼
② 商品Aなら、商品名の列から探して在庫数を返す結果
E212
A列:商品名B列:在庫数
商品A12
商品B0
商品C5

D2が空白ならE2も空白、商品Aなら12、商品Bなら0、存在しない商品Xなら「該当なし」です。「0個」と「商品が登録されていない」を区別できます。

未入力なら空欄、入力したら在庫数を表示(IFとXLOOKUP)式 =IF(D2="","",XLOOKUP(D2,$A$2:$A$4,$B$2:$B$4,"該当なし")) の解説図。E2に入力する
E2に =IF(D2="","",XLOOKUP(D2,$A$2:$A$4,$B$2:$B$4,"該当なし")) を入力。D2 は空欄ではないので XLOOKUP で商品Aを探す → 在庫数 12

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

XLOOKUP の基本(書き方・一致モード・下から検索・VLOOKUP との違い)は、XLOOKUP関数の使い方にまとめています。

IFとXLOOKUPのどちらを外側に置く?

判定したいこと式の組み立て
検索する前に入力の有無を判定IFの中にXLOOKUP
検索した数値で判定XLOOKUPの結果をセルに出し、そのセルをIFで判定
検索値が見つからないときの表示XLOOKUPの第4引数
ポイント未入力の判定は、空白がある検索範囲から意図しないデータを拾うのを避けるためにも役立ちます。

検索した在庫数が0なら「在庫なし」にする

E2に先ほどの検索結果を表示し、F2で判定すると、式の役割が分かれ、どこで問題が起きたか確認できます。B列の在庫数には数値を入力しておきます。

F2に入力:検索結果が0なら「在庫なし」と判定する
数式=IF(D2="","",IF(E2="該当なし","商品未登録",IF(E2=0,"在庫なし","在庫あり")))
ひとことで未入力・未登録・在庫なし・在庫あり、の4つに分ける
D2=""
商品名が未入力なら、何も表示しません
E2="該当なし"
E2の検索結果が「該当なし」なら、商品が登録されていません。先に「商品未登録」と分けます
E2=0
在庫数が0なら「在庫なし」、それ以外は「在庫あり」です
補足検索失敗を0に置き換えてしまうと、「在庫なし」と「商品未登録」を区別できなくなります。
ポイント商品Bなら「在庫なし」、商品Xなら「商品未登録」です。検索失敗を0に置き換えてしまうと、この2つを区別できなくなります。

在庫10個以下を「要発注」にする場合も、未登録を先に分けます。

G2に入力:10個以下なら「要発注」と判定する
数式=IF(D2="","",IF(E2="該当なし","商品未登録",IF(E2<=10,"要発注","在庫あり")))
ひとことで未登録を先に分けて、在庫が10以下なら「要発注」にする
E2="該当なし"
未登録を先に分けます。分けないと、文字の「該当なし」が 10 以下の判定に入り、判定がずれます
E2<=10
在庫数が10以下なら「要発注」、11以上なら「在庫あり」です
データの流れ
① 商品Cの在庫は5
E25
▼
② 10以下なので「要発注」結果
G2要発注
ポイント数式を1セルへまとめるために同じ検索を何度も書くより、まず検索結果のセルを分けて確認するのがおすすめです。

商品名とサイズの2条件で検索する

今度はA2:A5=商品名、B2:B5=サイズ、C2:C5=在庫数、E2=検索商品、F2=検索サイズとします。入力漏れをIFで確認し、両条件を満たす行をXLOOKUPで探します。

G2に入力:商品名とサイズの2条件で検索する
数式=IF(OR(E2="",F2=""),"",XLOOKUP(1,(A2:A5=E2)*(B2:B5=F2),C2:C5,"該当なし"))
ひとことでどちらかが未入力なら何も表示せず、両方入ったら2条件で在庫数を探す
OR(E2="",F2="")
商品名(E2)かサイズ(F2)の、どちらかが空白かを調べます
""
どちらかが空白なら、何も表示しません
XLOOKUP(1,(A2:A5=E2)*(B2:B5=F2),C2:C5,"該当なし")
商品名とサイズの両方が一致した行だけを 1 にして、その行の在庫数(C列)を探します
データの流れ
① 商品名もサイズも一致する行を探す(黄色)
2行目商品A/S3行目商品A/M4行目商品B/S5行目商品B/M
▼
② その行の在庫数が返る結果
G215
ポイント各比較のTRUE/FALSEを掛け合わせると、両方が一致した行だけが1になります。単純な連結では「AB+C」と「A+BC」が同じABCになることがあるため、項目ごとの比較ならその取り違えを避けられます。
注意同じ商品・サイズが複数行ある場合、XLOOKUPが返すのは通常先頭の1件です。倉庫別の在庫を合計したい場合はSUMIFS、全行を一覧にしたい場合はFILTERを使います。スピル機能だけで、同じ商品名の全行を自動抽出できるわけではありません。

IFERRORと「見つからない場合」の違い

ポイント「該当なし」と表示するだけなら、XLOOKUPの第4引数で対応できます。IFERRORは#REF!などの参照ミスまで置き換えるため、単なる検索失敗と数式の不備を区別しにくくなることがあります。

XLOOKUPで見つからない場合の値を指定する方法では、空白・0・メッセージの使い分けを説明しています。検索成功後に空白セルが0になる問題は、XLOOKUPで本当の0を残し、空白を返す方法をご覧ください。

【実機で検証】空のセルと0、エラーの隠れ方

XLOOKUP と IF を組み合わせるときに間違えやすい点を、Excel の実機で試しました。

エクセルのXLOOKUPとIFで空のセルと0、IFERRORと第4引数の違いを比べた画面
エクセルのXLOOKUPとIFで空のセルと0、IFERRORと第4引数の違いを比べた画面
探した先=XLOOKUP(…)IF(…=””)IF(…=0)
空のセル0 と表示空と判定0 と判定
本当の 00空ではない0 と判定

未入力と在庫 0 を分けるなら「=””」で調べます。「=0」では、空のセルも本当の 0 も同じになりました。

IFERROR は指定ミスまで隠す

検索範囲と戻り範囲の行数を間違えた式で比べました。IFERROR で囲むと「なし」と表示され、ミスに気付けません。XLOOKUP の第4引数なら #VALUE! が出ます。見つからないときの表示は、第4引数で指定するのが安全です。

XLOOKUPとIFの式がうまく判定できない・エラーになるときの確認表

症状主な原因確認と対処
#N/A や「該当なし」のままになる商品コードが数値と文字列で混在している/見えないスペースが付いている見た目が同じでも一致しません。検索値と一覧を、同じ形(数値か文字か)にそろえ、スペースを取り除く
#VALUE! になる検索範囲と戻り範囲の行数・開始行がずれている2つの範囲の開始行と終了行をそろえる
数式の文字がエラーになる文字を全角の引用符で囲んでいる文字を直接書くときは、半角の ” で囲む
#NAME? になるXLOOKUPが使えないExcel(2019・2016)で開いている検索部分をVLOOKUPやINDEX+MATCHに置き換える

検索範囲と戻り範囲の行数・開始行をそろえます。商品コードが数値と文字列で混在していたり、見えないスペースが付いていたりすると一致しません。文字を数式に直接書くときは半角の " で囲みます。

対応バージョンXLOOKUPはMicrosoft 365・Excel 2024・2021に対応します。Excel 2019・2016では、検索部分をVLOOKUPやINDEX+MATCHに置き換え、同じようにIFで入力や結果を判定できます。

仕様の確認:Microsoft公式・XLOOKUP関数

XLOOKUPで複数の条件を指定したいときは、XLOOKUPの複数条件の書き方(2つ・3つ以上・OR・行と列)で、すべてのパターンをまとめて解説しています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次