「ExcelのERROR関数ってどう使うの?」という検索は多いですが、実際に”ERROR”という名前の関数は存在しません。
しかし、計算式のエラーを検出・回避・制御するための関数は複数用意されています。
この記事では、エラー処理に使える代表的な関数をわかりやすく紹介し、実務での活用法も解説します。
Excelで表示される主なエラーの種類

まず、Excelでよく見かけるエラーの種類を確認しましょう。
エラー表示 | 意味 | よくある原因 |
---|---|---|
#DIV/0! | ゼロで割り算 | 分母が0または空白 |
#N/A | 値が見つからない | VLOOKUP等で該当なし |
#VALUE! | 値が不正 | 数値が必要な場所に文字 |
#REF! | 参照エラー | セルやシートが削除済み |
#NAME? | 名前エラー | 関数名の誤入力 |
#NUM! | 数値エラー | 数値が範囲外 |
#NULL! | 参照の交差エラー | セル範囲の指定ミス |
IFERROR関数:最もよく使われるエラー処理関数
基本的な使い方
書式:
=IFERROR(値, エラーの場合の値)
動作:
- 「値」がエラーでない場合 → そのまま表示
- 「値」がエラーの場合 → 「エラーの場合の値」を表示
具体的な使用例
例1:ゼロ除算エラーを防ぐ
# エラーが出る式
=A1/B1
# IFERRORで改善
=IFERROR(A1/B1, "計算不可")
結果:
- B1が0でない場合 → 普通に計算結果を表示
- B1が0や空白の場合 → 「計算不可」と表示
例2:売上データでの実用例
# 売上単価を計算(エラー対策あり)
=IFERROR(売上金額/販売数量, 0)
メリット:
#DIV/0!
エラーが表示されない- 見た目がすっきりする
- 後続の計算でエラーが連鎖しない
例3:複雑な計算での使用
# 複数の計算を含む場合
=IFERROR((A1*B1)/(C1+D1), "データ不足")
よくある用途
- ゼロ除算の対策
- VLOOKUPの未ヒット対策
- 見栄えを整える(エラー表示を隠す)
- 計算の連鎖エラーを防ぐ
ISERROR関数:エラーかどうかを判定

基本的な使い方
書式:
=ISERROR(値)
動作:
- エラーの場合 →
TRUE
- エラーでない場合 →
FALSE
実用例
例1:基本的な判定
=ISERROR(A1/B1)
結果:
- A1/B1がエラーなら
TRUE
- 正常に計算できれば
FALSE
例2:IF関数と組み合わせ
=IF(ISERROR(A1/B1), "計算エラー", A1/B1)
動作の流れ:
- A1/B1を計算
- エラーなら「計算エラー」を表示
- 正常なら計算結果を表示
例3:複数条件での活用
=IF(ISERROR(VLOOKUP(A1,テーブル,2,FALSE)), "未登録", VLOOKUP(A1,テーブル,2,FALSE))
IFERRORとの違い
関数 | 特徴 | 使い分け |
---|---|---|
IFERROR | エラー時の代替値を直接指定 | シンプルな代替表示 |
ISERROR | TRUE/FALSEで判定のみ | 複雑な条件分岐 |
ISERR関数:#N/A以外のエラーを判定
基本的な使い方
書式:
=ISERR(値)
動作:
#N/A
以外のエラー →TRUE
#N/A
または正常値 →FALSE
ISERRORとの違い
# 例:VLOOKUPで該当なしの場合
=VLOOKUP(A1, テーブル, 2, FALSE) # 結果:#N/A
=ISERROR(上記の式) # 結果:TRUE
=ISERR(上記の式) # 結果:FALSE
実用例
例1:計算エラーのみを検出
=IF(ISERR(A1/B1), "計算エラーです", A1/B1)
メリット:
- VLOOKUPの「見つからない」は正常として扱える
- 真の計算エラーのみを検出
例2:データ検証での活用
=IF(ISERR(VALUE(A1)), "数値以外が入力されています", "OK")
使いどころ
#N/A
を「正常なケース」として扱いたいとき- データ検索の「該当なし」と「エラー」を区別したいとき
IFNA関数:#N/A専用のIF関数

基本的な使い方
書式(Excel 2013以降):
=IFNA(式, "見つかりません")
動作:
#N/A
の場合 → 代替値を表示- その他のエラーや正常値 → そのまま表示
実用例
例1:VLOOKUP専用エラー処理
=IFNA(VLOOKUP(A1, 商品マスタ, 2, FALSE), "商品未登録")
結果:
- 商品が見つかった → 商品名を表示
- 商品が見つからない → 「商品未登録」を表示
- その他のエラー → エラーをそのまま表示(
#VALUE!
など)
例2:INDEX+MATCH関数との組み合わせ
=IFNA(INDEX(価格列, MATCH(A1, 商品列, 0)), "価格未設定")
他の関数との使い分け
# 同じ結果を得る3つの方法
# 1. IFNA(推奨)
=IFNA(VLOOKUP(A1, テーブル, 2, FALSE), "未登録")
# 2. IFERROR(すべてのエラーを対象)
=IFERROR(VLOOKUP(A1, テーブル, 2, FALSE), "未登録")
# 3. IF+ISERROR(古い方法)
=IF(ISERROR(VLOOKUP(A1, テーブル, 2, FALSE)), "未登録", VLOOKUP(A1, テーブル, 2, FALSE))
IFNAの利点:
#N/A
のみを対象とするため、より精密- 他のエラーは表示されるので、デバッグしやすい
ERROR.TYPE関数:エラーの種類を数値で返す
基本的な使い方
書式:
=ERROR.TYPE(値)
返り値:
エラー内容 | ERROR.TYPEの結果 |
---|---|
#NULL! | 1 |
#DIV/0! | 2 |
#VALUE! | 3 |
#REF! | 4 |
#NAME? | 5 |
#NUM! | 6 |
#N/A | 7 |
エラーでない | #N/A |
実用例
例1:エラーの種類別メッセージ
=CHOOSE(ERROR.TYPE(A1/B1),
"範囲エラー",
"ゼロ除算",
"値エラー",
"参照エラー",
"名前エラー",
"数値エラー",
"該当なし")
例2:IF文での条件分岐
=IF(ERROR.TYPE(A1/B1)=2, "分母がゼロです", A1/B1)
例3:エラーログの作成
=IF(ISERROR(計算式),
"エラー種別: " & ERROR.TYPE(計算式),
"正常")
活用場面
- デバッグ:どんなエラーが発生しているか特定
- ログ作成:エラーの種類を記録
- 条件分岐:エラーの種類によって処理を変更
実務でのエラー処理パターン

パターン1:売上分析での活用
売上単価の計算
# 基本式
=売上金額/販売数量
# エラー対策版
=IFERROR(売上金額/販売数量, 0)
# より詳細な対策版
=IF(販売数量=0, "販売なし", 売上金額/販売数量)
成長率の計算
# 前年比成長率
=IFERROR((今年売上-昨年売上)/昨年売上*100, "比較不可") & "%"
パターン2:顧客データでの活用
顧客情報の検索
# 顧客名の取得
=IFNA(VLOOKUP(顧客ID, 顧客マスタ, 2, FALSE), "新規顧客")
# 複数項目の取得
=IFNA(INDEX(顧客マスタ, MATCH(顧客ID, 顧客IDリスト, 0), 列番号), "未登録")
データ品質チェック
# 数値データのチェック
=IF(ISERROR(VALUE(A1)), "数値以外", "数値OK")
# 日付データのチェック
=IF(ISERROR(DATEVALUE(A1)), "日付形式エラー", "日付OK")
パターン3:在庫管理での活用
在庫回転率の計算
=IFERROR(売上原価/平均在庫, "在庫なし")
発注点の計算
=IFERROR(平均出荷量*リードタイム+安全在庫, "計算不可")
パターン4:財務分析での活用
財務比率の計算
# ROE(自己資本利益率)
=IFERROR(当期純利益/自己資本*100, "計算不可") & "%"
# 流動比率
=IFERROR(流動資産/流動負債*100, "負債なし") & "%"
条件付き書式との組み合わせ
エラーセルの色分け
設定方法
- セル範囲を選択
- ホーム → 条件付き書式 → 新しいルール
- 「数式を使用して書式設定するセルを決定」を選択
- 数式に
=ISERROR(A1)
を入力 - 書式を設定(背景色を赤など)
より詳細な色分け
# ゼロ除算エラーのみ赤色
=ERROR.TYPE(A1)=2
# N/Aエラーのみ黄色
=ERROR.TYPE(A1)=7
# 参照エラーのみ青色
=ERROR.TYPE(A1)=4
エラー処理のベストプラクティス
1. 適切な関数の選択
# 良い例:目的に応じた関数選択
=IFNA(VLOOKUP(...), "未登録") # 検索系
=IFERROR(A1/B1, 0) # 計算系
# 避けたい例:すべてをIFERRORで処理
=IFERROR(VLOOKUP(...), "未登録") # 他のエラーも隠してしまう
2. エラーメッセージの工夫
# 良い例:具体的なメッセージ
=IFERROR(A1/B1, "販売数量が未入力です")
# 避けたい例:曖昧なメッセージ
=IFERROR(A1/B1, "エラー")
3. 計算効率の考慮
# 効率的:関数を1回だけ実行
=IFERROR(VLOOKUP(A1, テーブル, 2, FALSE), "未登録")
# 非効率:同じ関数を2回実行
=IF(ISERROR(VLOOKUP(A1, テーブル, 2, FALSE)), "未登録", VLOOKUP(A1, テーブル, 2, FALSE))
4. デバッグを考慮した設計
# デバッグしやすい設計
=IF(B1=0, "分母がゼロ", A1/B1)
# デバッグしにくい設計
=IFERROR(A1/B1, 0) # エラーの原因がわからない
よくあるトラブルと対処法
トラブル1:IFERRORが効かない
症状:
=IFERROR(A1/B1, "エラー") # まだ#DIV/0!が表示される
原因と対処:
- セルの書式が「文字列」になっている
- 計算式が配列数式として入力されている
- Excelのバージョンが古い(2007以前)
解決策:
# セル書式を「標準」に変更
# または古いバージョンでは
=IF(ISERROR(A1/B1), "エラー", A1/B1)
トラブル2:空白セルでエラーが出る
症状:
=A1/B1 # B1が空白でもエラーになる
対処:
# 空白チェックを追加
=IF(B1="", "", IFERROR(A1/B1, "計算不可"))
# より簡潔に
=IF(OR(A1="", B1=""), "", A1/B1)
トラブル3:エラーが連鎖する
症状:
=C1*D1 # C1にエラーがあると、この式もエラーになる
対処:
# 上流でエラー処理
=IFERROR(C1, 0) * IFERROR(D1, 0)
# または
=IFERROR(C1*D1, 0)
まとめ:エラー処理関数の使い分け
関数 | 主な用途 | 推奨場面 |
---|---|---|
IFERROR | エラー全般の代替値表示 | 一般的な計算エラー対策 |
IFNA | #N/A専用の代替値表示 | VLOOKUP等の検索関数 |
ISERROR | エラー判定(TRUE/FALSE) | 複雑な条件分岐 |
ISERR | #N/A以外のエラー判定 | 検索結果「なし」を除外 |
ERROR.TYPE | エラー種別の特定 | デバッグ・ログ作成 |
コメント