ExcelでVLOOKUPやMATCHを使った検索を行うと、「#N/A」というエラーに遭遇することがよくあります。これは「該当データがない」というだけなのに、そのまま表に表示されると見た目が悪く、報告書や印刷物で恥ずかしい思いをすることもあります。
「#N/Aが出たら空白やメッセージを表示したい」
「IF関数で#N/Aを判定し、条件によって表示内容を変えたい」
このようなニーズに応えるのが、ISNA関数やIFNA関数とIF関数の組み合わせです。
この記事では「excel #n/a 判定 if」という検索意図に合わせて、
✅ 「#N/A」の意味と発生原因
✅ IF関数で「#N/A」を判定する基本と応用
✅ ISNA、IFNA、IFERRORの違い
✅ 実務で役立つ活用事例
✅ よくある間違いと注意点
を初心者にもわかりやすく徹底解説します。
目次
- ✅ 「#N/A」とは?
- ✅ なぜ「#N/A」を処理する必要があるのか?
- ✅ IF関数で「#N/A」を判定する方法
- ・IF関数だけでは「#N/A」を直接判定できない
- ✅ ISNA関数との組み合わせが基本
- ・ ISNA関数とは
- ・ IF関数×ISNAで「#N/A」を判定する構文
- ・VLOOKUPで「未登録」表示する方法
- ✅ IFNA関数を使う方法(Excel 2013以降推奨)
- ・ IFNA関数とは
- ・IFNAで「該当なし」表示する方法
- ■IFERROR関数との違い
- ・ IFERRORとは
- ・ 違いを表で比較
- ■【実務で役立つ活用事例】
- ① 名簿チェックで「未登録」を表示
- ② 商品管理で「データなし」を表示(IFNA簡潔版)
- ③ MATCH関数で順位検索+空白処理
- ④ 集計資料で除算エラーと#N/Aを処理(IFERROR使用)
- ■よくある間違いと注意点
- ・ IFで「=“#N/A”」としてしまう
- ・ IFERRORでエラーを隠しすぎてしまう
- ・ 「空白」と「0」の使い分け
- ■【まとめ】Excelで「#N/A」をIF関数で判定する極意
- ・今日から使えるサンプル構文集
✅ 「#N/A」とは?
◆ 意味
「Not Available(該当なし)」の略で、主に検索関数(VLOOKUP、MATCH、XLOOKUPなど)で検索結果が見つからなかった時に表示されるエラーです。
◆ 発生する例
=VLOOKUP("A001", 顧客表!A:B, 2, FALSE)
顧客表に「A001」が存在しない場合 → **「#N/A」**が返されます。
✅ なぜ「#N/A」を処理する必要があるのか?
「#N/A」は誤りではありませんが、次の問題があります。
✅ 表が見づらくなる
✅ グラフやピボットテーブルで集計が崩れる
✅ 印刷・提出資料で見栄えが悪くなる
✅ 関数の入れ子で他の処理に影響を与える
そのため、**「#N/Aが出た場合は他の値を表示する」**というエラー処理が実務で必須となります。
✅ IF関数で「#N/A」を判定する方法
・IF関数だけでは「#N/A」を直接判定できない
以下のように書いても正しく動作しません:
=IF(VLOOKUP(A2, 顧客表!A:B, 2, FALSE)="#N/A", "未登録", "登録済")
理由: 「#N/A」は文字列ではなく、エラー値であるため比較不可。
【Excel】IF関数で「#N/Aならば」を判定する方法とは?エラー制御で見やすいExcel表を作ろう
✅ ISNA関数との組み合わせが基本
・ ISNA関数とは
=ISNA(値)
値が 「#N/A」ならTRUE、それ以外はFALSEを返します。
【Excel】IFNA関数とは?VLOOKUPとの組み合わせで使い方を完全解説!
・ IF関数×ISNAで「#N/A」を判定する構文
=IF(ISNA(数式), "エラー時の表示", 数式)
・VLOOKUPで「未登録」表示する方法
=IF(ISNA(VLOOKUP(A2, 顧客一覧!A:B, 2, FALSE)), "未登録", VLOOKUP(A2, 顧客一覧!A:B, 2, FALSE))
- A2の顧客コードを検索
- 見つからなければ「未登録」
- 見つかればVLOOKUPの結果を表示
✅ IFNA関数を使う方法(Excel 2013以降推奨)
・ IFNA関数とは
=IFNA(数式, エラー時の値)
「#N/A」のみを対象に処理する関数で、IF×ISNAの組み合わせをより簡潔に記述可能。
【Excel】IFNA関数とは?VLOOKUPとの組み合わせで使い方を完全解説!
・IFNAで「該当なし」表示する方法
=IFNA(VLOOKUP(A2, 商品表!A:B, 2, FALSE), "該当なし")
- 「#N/A」 →「該当なし」
- その他のエラー(#DIV/0! など)は処理されずそのまま表示
■IFERROR関数との違い
・ IFERRORとは
=IFERROR(数式, エラー時の値)
「すべてのエラー」を処理できる万能型ですが、間違った参照エラー(#REF!)や除算エラー(#DIV/0!)も処理してしまうため、エラーに気付きにくくなるリスクがあります。
・ 違いを表で比較
項目 | IFNA | IFERROR | IF(ISNA(...)) |
---|---|---|---|
処理対象 | #N/Aのみ | すべてのエラー | #N/Aのみ |
記述の簡潔さ | ◎ | ◎ | △(二重記述が必要) |
安全性 | ◎(安全) | △(エラーを隠す) | ◎(安全) |
バージョン対応 | Excel 2013以降 | Excel 2007以降 | 全バージョン |
■【実務で役立つ活用事例】
① 名簿チェックで「未登録」を表示
=IF(ISNA(VLOOKUP(B2, 名簿!A:C, 2, FALSE)), "未登録", VLOOKUP(B2, 名簿!A:C, 2, FALSE))
- B2の名前を名簿で検索
- 見つからない場合は「未登録」
- 見つかった場合は名前を表示
② 商品管理で「データなし」を表示(IFNA簡潔版)
=IFNA(VLOOKUP(D2, 商品一覧!A:B, 2, FALSE), "データなし")
- 商品コードが見つからなければ「データなし」
- 見つかれば単価を表示
③ MATCH関数で順位検索+空白処理
=IFNA(MATCH(G2, 商品マスタ!A:A, 0), "")
- 商品コードG2が見つからなければ空白
- 見つかれば順位(行番号)を返す
④ 集計資料で除算エラーと#N/Aを処理(IFERROR使用)
=IFERROR(VLOOKUP(A2, 売上表!A:C, 3, FALSE)/B2, "")
- VLOOKUPで金額を取得しB2で除算
- #N/A、#DIV/0! などすべてのエラーを空白に置き換え
■よくある間違いと注意点
・ IFで「=“#N/A”」としてしまう
× =IF(VLOOKUP(...)="#N/A", ...)
→ 比較できず失敗します。
✅ ISNAやIFNAを使うのが正解。
・ IFERRORでエラーを隠しすぎてしまう
IFERRORはすべてのエラーを処理してしまうため、参照エラーや構文ミスが発見できなくなることがあります。
VLOOKUPなどの検索用途ではIFNAを使う方が安全です。
・ 「空白」と「0」の使い分け
""
(空白):集計に含まれない0
(ゼロ):集計に含まれる
資料用途・集計用途に応じて使い分けましょう。
■【まとめ】Excelで「#N/A」をIF関数で判定する極意
✅ 「#N/A」は検索結果がないだけでエラーではないが、見た目が悪いので処理する
✅ IF関数単体では処理できないので ISNAまたはIFNA関数を併用する
✅ IFNAは簡潔で安全、IFERRORは万能だが注意が必要
✅ 実務の請求書、名簿管理、報告資料で活用すれば見栄えと作業効率が向上
・今日から使えるサンプル構文集
用途 | 数式例 |
---|---|
顧客管理で「未登録」表示 | =IFNA(VLOOKUP(A2, 顧客!A:B, 2, FALSE), "未登録") |
商品コードの有無で空白処理 | =IFNA(MATCH(D2, 商品マスタ!A:A, 0), "") |
除算エラーと#N/A対応(IFERROR) | =IFERROR(VLOOKUP(A2, 売上表!A:C, 3, FALSE)/B2, "") |
今回の方法をマスターすれば、「#N/A」エラーで汚れたExcelファイルが一気に見やすく整います。
ぜひ実務で活用し、業務効率化を加速させてください。