ERROR.TYPE:エラーの種類を判別して処理を分岐させる
💡 やりたいこと
セルのエラーが「#N/A(検索で見つからない)」なのか「#DIV/0!(ゼロ除算)」なのか「#VALUE!(型の不一致)」なのかによって、表示するメッセージやその後の計算を細かく変えたい。
1. ERROR.TYPE関数の基本
IFERRORは「どんなエラーでも一律で同じ処理」にしてしまいますが、ERROR.TYPEを使えばエラーの発生原因を特定できます。
=ERROR.TYPE(調査したいセル)
エラーの種類に応じた「数値(1〜8)」を返します。エラーでない場合は #N/A を返してしまう点に注意が必要です。
🔥 エラー番号の対応表
- 1#NULL!無効なセル参照指定(カンマ忘れ等)
- 2#DIV/0!ゼロによる割り算が発生した
- 3#VALUE!データ型が間違っている(文字と数字の計算など)
- 4#REF!参照先のセルが削除されてしまった無効な参照
- 5#NAME?関数名などの名前のスペルミス・未定義
- 6#NUM!数値が大きすぎる、または小さすぎる問題
- 7#N/AVLOOKUPなどで検索値が見つからない
- 8#GETTING_DATA巨大なデータの計算中・読込中
2. 実践例:エラー種類別のメッセージ出し分け
IF関数を組み合わせて、「エラーがない場合」「エラー2(ゼロ除算)の場合」「エラー7(N/A)の場合」を分岐させます。
旧バージョンのExcel(2016など)でIFSやSWITCHが使えない場合はCHOOSE関数と連携させると綺麗です。
// IF多段ネストで処理を分岐させる(全ver対応)
=IF(ISERROR(A1),
IF(ERROR.TYPE(A1)=2, "分母がゼロです",
IF(ERROR.TYPE(A1)=7, "データ未登録", "その他のエラー")
),
A1)
// 新しいExcelならSWITCH関数でスマートに
=IF(ISERROR(A1),
SWITCH(ERROR.TYPE(A1), 2, "分母がゼロ", 7, "データなし", "その他エラー"),
A1)
💡 #N/A エラー「だけ」を無視したいなら
Excel 2013以降であれば、ERROR.TYPEを使わなくても
Excel 2013以降であれば、ERROR.TYPEを使わなくても
IFNA(数式, エラー時の値) 関数を使うことで、「#N/Aの時だけ」別の表示にし、それ以外の重大なエラーはあえて画面に残すことができます。