Excelで表を作成していると、「#N/A(エヌエー)」というエラーに遭遇することがあります。これは「Not Available(該当なし)」という意味で、主に VLOOKUP や MATCH などの検索関数で、検索結果が見つからなかったときに表示されます。
この「#N/A」をそのまま表示させてしまうと、見た目が悪くなったり、報告書や帳票で不適切に見えたりすることがあります。そこで使えるのが IF関数とISNA関数、IFERROR関数 です。
本記事では、「if関数 #n/aならば」という検索キーワードに沿って、#N/Aエラーを条件分岐で判定する方法を中心に、実務で役立つExcel関数の組み合わせや使い分けのコツを詳しく解説します。
目次
- ✅ そもそも「#N/A」とは?意味と発生原因
- ・ #N/Aの意味
- ・ 主に発生する関数
- ✅ IF関数で「#N/Aならば」を判定するには?
- ✅ ISNA関数とIF関数を組み合わせる方法
- ✅ IFERROR関数を使って簡略化する方法
- ✅ IFNA関数で「#N/A」だけを処理する方法
- ■実務で役立つ応用例
- ① 顧客名簿の自動照合
- ② 商品コードの存在確認(空白制御付き)
- ③ 除算処理+エラー制御を含めた構文
- ■ISNA、IFERROR、IFNAの違いを比較
- ■よくある間違いとその対処法
- ・ 間違い1:IF関数だけで#N/Aを処理しようとする
- ・ 間違い2:IFERRORで全てのエラーを隠してしまう
- ■#N/Aを制御する構文テンプレートまとめ
- ■まとめ:IF関数で「#N/Aならば」を判定するコツとは?
✅ そもそも「#N/A」とは?意味と発生原因
・ #N/Aの意味
「Not Available(該当なし)」の略で、検索対象に値が存在しないときに返されるエラーです。
・ 主に発生する関数
VLOOKUPHLOOKUPLOOKUPMATCHXLOOKUP
◆ 例:
=VLOOKUP("A001", 商品表!A:B, 2, FALSE)
→ 「A001」が商品表に存在しない場合、結果は 「#N/A」 になります。
✅ IF関数で「#N/Aならば」を判定するには?
IF関数は通常、「=IF(条件, 真の場合, 偽の場合)」という形式で使いますが、「#N/Aかどうか」を判定するためには、単体では機能しません。そこで補助的に使うのが ISNA関数 または IFERROR関数 です。
【Excel】【初心者向け】ExcelのIF関数とは?使い方からよくある間違いまでやさしく解説!
✅ ISNA関数とIF関数を組み合わせる方法
◆ 構文:
=IF(ISNA(数式), "該当なし", 数式)
この構文は、「数式が#N/Aエラーであるか」を判定します。
◆ 使用例:
=IF(ISNA(VLOOKUP(A2, 顧客一覧!A:B, 2, FALSE)), "未登録", VLOOKUP(A2, 顧客一覧!A:B, 2, FALSE))
- 顧客コードが存在しない → 「未登録」と表示
- 存在する → VLOOKUPの結果を表示
◆ 解説:
ISNA()は結果が #N/Aのとき TRUE を返すIF()でその結果を判定して分岐処理が可能
◆ メリット:
- 他のエラー(例:#REF!、#DIV/0!)はそのまま表示されるため、本来のエラーを見逃さない
【Excel】「IFNA」と「IF関数」を組み合わせる方法|エラー処理と条件分岐を同時に行う実務テクニック
✅ IFERROR関数を使って簡略化する方法
◆ 構文:
=IFERROR(数式, エラー時の値)
IFERROR関数は、#N/Aを含むすべてのエラーをまとめて処理できます。
◆ 使用例:
=IFERROR(VLOOKUP(A2, 顧客一覧!A:B, 2, FALSE), "未登録")
#N/A、#DIV/0!、#REF!などをすべて「未登録」に変える
◆ メリット:
- 書き方がシンプル
- 式が長くならず、初心者にも扱いやすい
◆ デメリット:
- 他のエラーもすべて処理してしまうため、間違いに気付きにくくなる場合がある
【Excel】IFNA関数とIFERROR関数の違いとは?Excelエラー対処の使い分けガイド
✅ IFNA関数で「#N/A」だけを処理する方法
Excel 2013以降で使える IFNA 関数は、IFERROR と似ていますが、#N/Aのみを処理対象にするため、より安全です。
◆ 構文:
=IFNA(数式, #N/A時の値)
◆ 使用例:
=IFNA(VLOOKUP(A2, 商品表!A:B, 2, FALSE), "該当なし")
◆ メリット:
- #N/Aだけを処理するので、構文ミスなどの他のエラーには気付ける
- 安全かつ明快な構文で使いやすい
■実務で役立つ応用例
① 顧客名簿の自動照合
=IF(ISNA(VLOOKUP(B2, 名簿!A:C, 2, FALSE)), "未登録", VLOOKUP(B2, 名簿!A:C, 2, FALSE))
→ 登録の有無を自動判定。名簿作成、出欠管理に便利。
【Excel】IF関数とVLOOKUP関数の併用で柔軟なデータ処理を実現する方法|条件分岐×検索
② 商品コードの存在確認(空白制御付き)
=IF(B2="", "", IFNA(VLOOKUP(B2, 商品一覧!A:B, 2, FALSE), "不明"))
→ 入力がない行は空白にし、存在しない商品コードは「不明」と表示。請求書や納品書に最適。
【Excel】IFNAとVLOOKUPの組み合わせ完全ガイド|エラー対策で正確な表を作る方法
③ 除算処理+エラー制御を含めた構文
=IFERROR(A2/B2, "")
→ B2が0や空白で除算できないとき、空白にする。
■ISNA、IFERROR、IFNAの違いを比較
| 関数 | 処理対象 | 対象のエラー | 安全性 | 利用可能バージョン |
|---|---|---|---|---|
| ISNA+IF | #N/A | 限定的 | ◎(安全) | Excel 2003以降 |
| IFERROR | すべてのエラー | #N/A, #DIV/0!等 | △(万能だが注意) | Excel 2007以降 |
| IFNA | #N/Aのみ | #N/Aのみ | ◎(検索向き) | Excel 2013以降 |
■よくある間違いとその対処法
・ 間違い1:IF関数だけで#N/Aを処理しようとする
=IF(VLOOKUP(A2, 商品表!A:B, 2, FALSE)="#N/A", "未登録", ...)
→ この方法では機能しません。#N/Aは文字列ではないため比較できない。
正しくは:
=IF(ISNA(VLOOKUP(...)), "未登録", ...)
・ 間違い2:IFERRORで全てのエラーを隠してしまう
→ 本来の構文ミスや参照エラーも「未登録」と処理されてしまい、問題に気付きにくくなります。
解決策: ISNAまたはIFNAで、エラーの種類を限定して処理しましょう。
■#N/Aを制御する構文テンプレートまとめ
| 使用目的 | 推奨関数 | 数式例 |
|---|---|---|
| #N/Aのみに対応 | ISNA + IF | =IF(ISNA(VLOOKUP(A2, 商品!A:B, 2, FALSE)), "未登録", VLOOKUP(...)) |
| 簡易処理(初心者向け) | IFERROR | =IFERROR(VLOOKUP(A2, 商品!A:B, 2, FALSE), "未登録") |
| 安全かつ簡潔 | IFNA | =IFNA(VLOOKUP(A2, 商品!A:B, 2, FALSE), "未登録") |
■まとめ:IF関数で「#N/Aならば」を判定するコツとは?
- 「#N/A」エラーはISNA関数で判定するのが王道
- 簡潔に書きたいならIFERROR関数、安全に処理したいならIFNA関数がおすすめ
- 実務では「空白時の制御」「見た目の改善」もあわせて工夫すると見やすくなる
Excel関数は見せ方・伝え方を制御するためのツールでもあります。「#N/A」エラーをうまく処理することで、誰が見ても分かりやすい・整った表が作れるようになります。今回の内容を、ぜひ日々の業務に役立ててください。