VLOOKUPとIF関数を組み合わせる方法を図解で解説。「一致したら〇」「見つからなければ別の処理」など実務でよく使うパターンをサンプル付きで紹介します。
目次
この記事でわかること
- VLOOKUPとIF関数を組み合わせる4つのパターン
- どのパターンを使えばいいか迷ったときの判断フロー
- IFERROR・IFNAの使い分け
- 空白行に#N/Aを出さない方法
- 取得した値の中身によって表示を切り替える方法
VLOOKUPとIFを組み合わせる場面
VLOOKUPは「検索して値を返す」機能に特化しています。しかし現場では「見つかったら〇〇、見つからなかったら××」というように条件分岐を加えたいケースが多くあります。
そのときに使うのがIF関数との組み合わせです。
| よくある場面 | 使うパターン |
| #N/Aの代わりに「登録なし」と表示したい | IFERROR+VLOOKUP |
| 検索値が空白のときに#N/Aを出したくない | IF+VLOOKUP |
| 取得した値が〇〇だったら「対象」と表示したい | IF(VLOOKUP(…)) |
| 部署によって参照先のマスタを変えたい | IF(…, VLOOKUP(…), VLOOKUP(…)) |
どのパターンから書けばいいかの判断フロー
「IFとIFERRORのどっちを使えばいい?」「どこに何を入れるの?」と迷う方向けに、判断フローを先に整理します。
Q1. VLOOKUPのエラー(#N/A)を処理したいだけ?
→ YES:IFERROR(VLOOKUP(…), “表示したい文字”) → パターン①へ
Q2. 検索値(入力セル)が空欄のときに反応させたくない?
→ YES:IF(C3=””, “”, VLOOKUP(…)) → パターン②へ
Q3. VLOOKUPで取得した”値の中身”によって表示を変えたい?
→ YES:IF(VLOOKUP(…)=条件, “〇〇”, “××”) → パターン③へ
Q4. 参照先のマスタ自体を条件で切り替えたい?
→ YES:IF(条件, VLOOKUP(マスタA), VLOOKUP(マスタB)) → パターン④へ
このフローを見てもピンとこない場合は、パターン①から順番に読んでいただければどれか必ず当てはまります。
パターン①:VLOOKUPが#N/Aのとき別の値を表示する(IFERROR)
最も使用頻度が高い組み合わせです。IFERRORでVLOOKUP全体を包むことで、エラー時の表示を制御できます。

=IFERROR(VLOOKUP(C3, F:I, 2, FALSE), "登録なし")
- VLOOKUPが正常に値を返す → その値をそのまま表示
- #N/Aなどエラーが出る → 「登録なし」を表示
空白で表示したい場合は “” を指定します。
=IFERROR(VLOOKUP(C3, F:I, 2, FALSE), "")

=IFNA(VLOOKUP(C3, F:I, 2, FALSE), "登録なし")
パターン②:検索値が空白のときVLOOKUPを実行しない

検索値のセルが空白のとき、VLOOKUPは#N/Aを返します。まだ入力していない行にもエラーが並んで見栄えが悪い場合に使ってください。
IF関数で「空白なら空白、入力済みならVLOOKUP」と制御します。

=IF(C3="", "", VLOOKUP(C3, F:I, 2, FALSE))
- C3が空白 → 何も表示しない(””)
- C3に値がある → VLOOKUPを実行して結果を表示
IFERRORと組み合わせると、空白行の処理と「マスタにない場合の処理」の両方をカバーできます。
=IF(C3="", "", IFERROR(VLOOKUP(C3, F:I, 2, FALSE), "登録なし"))
パターン③:VLOOKUPの結果によって表示を変える
VLOOKUPで取得した値をそのまま表示するのではなく、その値に応じてさらに条件分岐させるパターンです。
例:在庫数を取得して「在庫あり/在庫なし」を表示する


=IFERROR(VLOOKUP(C3, F:I, 2, FALSE), "登録なし")
マスタから在庫数を取得し、0より大きければ「在庫あり」、0以下なら「在庫なし」と表示します。
例:担当部署を取得して「送付対象/対象外」を判定する
=IF(VLOOKUP(C3, 社員マスタ!A:C, 3, FALSE)="営業部", "送付対象", "対象外")
このパターンは「マスタから取ってきた値をさらに条件判定する」という二段構えの処理です。使い勝手はいいですが、VLOOKUPが同じセルに複数回書かれると重複処理が起きます。同じ検索を何度もさせたくない場合はLET関数でVLOOKUPの結果を変数に入れると効率的です。
パターン④:複数条件でVLOOKUPを切り替える
参照するマスタを条件によって変えたいケースです。
例:商品カテゴリが「消耗品」なら消耗品マスタ、「備品」なら備品マスタを参照する
=IF(B3="消耗品", VLOOKUP(C3, 消耗品マスタ!A:C, 2, FALSE), VLOOKUP(C3, 備品マスタ!A:C, 2, FALSE))
3パターン以上に分岐させる場合はIFSを使うとスッキリ書けます。
=IFS(B3="消耗品", VLOOKUP(C3, 消耗品マスタ!A:C, 2, FALSE), B3="備品", VLOOKUP(C3, 備品マスタ!A:C, 2, FALSE), B3="設備", VLOOKUP(C3, 設備マスタ!A:C, 2, FALSE))
よくある質問(FAQ)
Q. IFERRORとIFNAの使い分けはどうすればいいですか?
A. すべてのエラーをまとめて処理したいならIFERROR、#N/Aだけを処理して他のエラー(#REF!など)は見えるままにしたいならIFNAです。「数式が壊れている」という問題も隠したくない場面ではIFNAのほうが安全で、個人的にはIFNAを使うケースのほうが多いです。
Q. IFとVLOOKUPを組み合わせると数式が長くなって読みにくいです。
A. XLOOKUPに切り替えると =XLOOKUP(C3, F:F, G:G, “登録なし”) のように第4引数でエラー時の値を直接指定できるため、IFERRORが不要になります。数式が長くなってきたタイミングが、XLOOKUPへの乗り換えを検討するいいサインです。
⇩ XLOOKUP関数の詳しい解説はこちら ⇩
【脱VLOOKUP】XLOOKUP関数の使い方を解説!列数え不要・エラー処理もこれ1本で完結
この記事でわかること XLOOKUPの基本の使い方(コピペOKの数式付き) 受注管理表を使った実務シミュレーション #N/Aエラーをなくす方法 スピル・複数条件…
Q. VLOOKUP結果を複数の条件で判定したい場合は?
A. IFSを使うとスッキリ書けます。ただしVLOOKUPが何度も実行されるため、LET関数で結果を一度変数に入れてから判定するとパフォーマンスが改善します。=LET(result, VLOOKUP(C3, F:I, 2, FALSE), IFS(result=”A”, “優秀”, result=”B”, “良好”, TRUE, “要改善”)) という形です。
まとめ
VLOOKUPとIF関数の組み合わせパターンを整理します。
- IFERROR+VLOOKUP:エラー時に「登録なし」や空白を表示(最もよく使う)
- IF(C=””, “”, VLOOKUP(…)):空白行に#N/Aを出さない
- IF(VLOOKUP(…)>条件, “〇〇”, “××”):取得した値で表示を切り替える
- IF(条件, VLOOKUP(マスタA), VLOOKUP(マスタB)):参照先のマスタを条件で切り替える
どれを使うかは「判断フロー」で選ぶのが一番迷いません。数式が複雑になり始めたタイミングで、XLOOKUPへの切り替えも視野に入れてみてください。
あわせて読みたい
VLOOKUPの使い方とは?基本構文・よくあるエラーまで完全ガイド
この記事でわかること VLOOKUPの基本構文(コピペOK) 別シート参照・複数条件の使い方 #N/A・#REF!などエラーの原因と直し方 VLOOKUPでは限…
VLOOKUPで#N/Aエラーが出る原因と直し方【図解】|消す方法・表示を変える方法まで
この記事でわかること #N/Aエラーが出る4つの原因(全角・半角/スペース/型の不一致/データなし) 原因別の修正方法(ASC・TRIM・VALUE関数など) …
【脱VLOOKUP】XLOOKUP関数の使い方を解説!列数え不要・エラー処理もこれ1本で完結
この記事でわかること XLOOKUPの基本の使い方(コピペOKの数式付き) 受注管理表を使った実務シミュレーション #N/Aエラーをなくす方法 スピル・複数条件…
文/Habiny







DIME MAGAZINE














