【完全ガイド】Excelでエラー処理する関数まとめ

Excel

「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)

動作の流れ:

  1. A1/B1を計算
  2. エラーなら「計算エラー」を表示
  3. 正常なら計算結果を表示

例3:複数条件での活用

=IF(ISERROR(VLOOKUP(A1,テーブル,2,FALSE)), "未登録", VLOOKUP(A1,テーブル,2,FALSE))

IFERRORとの違い

関数特徴使い分け
IFERRORエラー時の代替値を直接指定シンプルな代替表示
ISERRORTRUE/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/A7
エラーでない#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, "負債なし") & "%"

条件付き書式との組み合わせ

エラーセルの色分け

設定方法

  1. セル範囲を選択
  2. ホーム → 条件付き書式 → 新しいルール
  3. 「数式を使用して書式設定するセルを決定」を選択
  4. 数式に=ISERROR(A1)を入力
  5. 書式を設定(背景色を赤など)

より詳細な色分け

# ゼロ除算エラーのみ赤色
=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エラー種別の特定デバッグ・ログ作成

コメント

タイトルとURLをコピーしました