【初心者向け】ExcelのIFERROR関数の使い方|エラーを見せずにスマートな表を作ろう!

Excel

「VLOOKUPで#N/Aエラーが表示されて見栄えが悪い」
「割り算で#DIV/0!が出てしまう」
「計算式にエラーが混じると表全体が台無しになる」

このようなエラー表示の問題を解決するのが、ExcelのIFERROR関数です。

エラーが発生した場合に、自動的に指定した値やメッセージを表示することで、見た目もきれいで使いやすい表を作成できます。

この記事では、IFERROR関数の基本的な使い方から、実用的な活用例、注意点まで、初心者の方にもわかりやすく詳しく解説します。

スポンサーリンク

IFERROR関数の基本概念と必要性

IFERROR関数とは

IFERROR関数は、指定した数式や関数がエラーを返した場合に、そのエラーの代わりに別の値を表示するExcelの論理関数です。

Excel 2007以降で利用できます。

なぜIFERROR関数が必要なのか

エラー表示の問題点

# エラーが表示される例
     A      B       C
1   商品   単価    数量
2   りんご  150     10
3   バナナ  120      0
4   合計   =A2*B2  =A3*B3

# 結果: C3は #DIV/0! エラーが表示される

IFERROR使用後の改善

# IFERRORでエラーを回避
     A      B       C
1   商品   単価    数量
2   りんご  150     10
3   バナナ  120      0
4   合計   =IFERROR(A2*B2,"")  =IFERROR(A3*B3,"")

# 結果: C3は空白表示で見た目がきれい

IFERRORが対応するエラーの種類

エラー原因よくある場面
#DIV/0!ゼロ除算割り算で分母が0
#N/A値が見つからないVLOOKUP、MATCH関数
#VALUE!データ型エラー数値と文字列の計算
#REF!参照エラー削除されたセルの参照
#NAME?名前エラー関数名の入力ミス
#NUM!数値エラー無効な数値計算
#NULL!NULL値エラー範囲の指定ミス

IFERROR関数の基本構文と概要

基本構文

=IFERROR(値, エラー時の値)

パラメータの詳細

パラメータ説明
通常実行したい数式や関数A1/B1, VLOOKUP(...)
エラー時の値エラーが発生した場合に表示する値0, "", "該当なし"

動作の流れ

  1. 第1引数の「値」を実行
  2. エラーが発生しない場合:そのまま結果を表示
  3. エラーが発生した場合:第2引数の「エラー時の値」を表示

基本的な使用例

ゼロ除算エラーの回避

# エラーが出る例
A1: 100
B1: 0
C1: =A1/B1  # 結果: #DIV/0!

# IFERRORで回避
C1: =IFERROR(A1/B1, 0)  # 結果: 0
C2: =IFERROR(A1/B1, "計算不可")  # 結果: 計算不可
C3: =IFERROR(A1/B1, "")  # 結果: (空白表示)

VLOOKUP関数でのエラー回避

# 社員マスター
     A      B
1   社員ID  氏名
2   101    田中
3   102    佐藤
4   103    鈴木

# エラーが出る例
D1: =VLOOKUP(105, A2:B4, 2, FALSE)  # 結果: #N/A

# IFERRORで回避
D1: =IFERROR(VLOOKUP(105, A2:B4, 2, FALSE), "該当なし")  # 結果: 該当なし
D2: =IFERROR(VLOOKUP(105, A2:B4, 2, FALSE), "")  # 結果: (空白)
D3: =IFERROR(VLOOKUP(105, A2:B4, 2, FALSE), "未登録")  # 結果: 未登録

計算式での総合的なエラー処理

# 売上計算での活用
     A      B      C       D
1   商品   単価   数量    売上
2   商品A   100    5     =IFERROR(B2*C2, 0)
3   商品B   150    0     =IFERROR(B3*C3, 0)  
4   商品C         3     =IFERROR(B4*C4, 0)  # B4が空白でもエラーにならない

# 結果: エラー表示なしで計算が完了

実用的なビジネス活用例

顧客管理システムでの活用

# 顧客マスターと注文データの連携
# 顧客マスター(別シート)
     A        B       C
1   顧客ID   会社名   担当者
2   C001    ABC商事   田中
3   C002    XYZ企画   佐藤

# 注文管理表
     D      E                              F
1   顧客ID  会社名                          担当者
2   C001   =IFERROR(VLOOKUP(D2,顧客マスター!A:C,2,0),"未登録")  =IFERROR(VLOOKUP(D2,顧客マスター!A:C,3,0),"")
3   C003   =IFERROR(VLOOKUP(D3,顧客マスター!A:C,2,0),"未登録")  =IFERROR(VLOOKUP(D3,顧客マスター!A:C,3,0),"")

# 結果: 存在しない顧客ID(C003)には「未登録」と表示

在庫管理での活用

# 在庫計算での安全な処理
     A       B      C       D         E
1   商品名  入庫   出庫    残高      回転率
2   商品A    100    80    =B2-C2    =IFERROR(C2/D2, 0)
3   商品B     50    50    =B3-C3    =IFERROR(C3/D3, 0)  # 残高0での除算回避
4   商品C     30    25    =B4-C4    =IFERROR(C4/D4, 0)

# 残高が0でも回転率計算でエラーが発生しない

成績管理での活用

# 学生成績表での安全な平均計算
     A      B     C     D     E      F
1   学生名  国語  数学  英語  合計   平均
2   田中    85    90    78   =B2+C2+D2  =IFERROR(E2/3, "")
3   佐藤    92          85   =B3+C3+D3  =IFERROR(E3/3, "")  # 数学未受験
4   鈴木    78    85    90   =B4+C4+D4  =IFERROR(E4/3, "")

# 未受験科目があってもエラー表示されない

売上分析での活用

# 月別売上分析
     A      B        C        D           E
1   月     売上     前年同月  成長率       評価
2   1月   1200000   1000000  =IFERROR((B2-C2)/C2*100, 0)&"%"  =IF(D2>10,"優秀","標準")
3   2月   1500000           =IFERROR((B3-C3)/C3*100, 0)&"%"  =IF(D3>10,"優秀","標準")
4   3月   1100000   1200000  =IFERROR((B4-C4)/C4*100, 0)&"%"  =IF(D4>10,"優秀","標準")

# 前年データがない月もエラーにならない

IF関数との違いと使い分け

IF関数との比較

関数主な用途判定基準記述例
IF条件による分岐論理条件=IF(A1>100, "大", "小")
IFERRORエラー処理エラーの有無=IFERROR(A1/B1, 0)

同じ結果を得る場合の比較

# ゼロ除算を避ける場合

# IF関数を使った方法
=IF(B1=0, 0, A1/B1)

# IFERROR関数を使った方法
=IFERROR(A1/B1, 0)

# IFERRORの方がシンプルで読みやすい

複雑な条件でのIF vs IFERROR

# 複数の条件をチェックする場合

# IF関数での複雑な条件チェック
=IF(OR(B1=0, B1="", ISBLANK(B1)), 0, A1/B1)

# IFERRORでのシンプルな処理
=IFERROR(A1/B1, 0)

# IFERRORは条件を考えなくてもエラーを包括的に処理

他の関数との組み合わせ

VLOOKUP + IFERROR

# 基本パターン
=IFERROR(VLOOKUP(検索値, 範囲, 列番号, FALSE), "該当なし")

# 実用例:価格表から価格を取得
=IFERROR(VLOOKUP(A2, 価格表!A:C, 3, FALSE), "価格未設定")

INDEX + MATCH + IFERROR

# より柔軟な検索でのエラー処理
=IFERROR(INDEX(戻り範囲, MATCH(検索値, 検索範囲, 0)), "見つかりません")

# 実用例:双方向検索
=IFERROR(INDEX(B:B, MATCH(E1, A:A, 0)), "該当データなし")

SUMIF + IFERROR

# 条件付き合計でのエラー処理
=IFERROR(SUMIF(条件範囲, 条件, 合計範囲), 0)

# 実用例:部門別売上合計
=IFERROR(SUMIF(部門列, "営業", 売上列), "データなし")

ネストしたIFERROR

# 段階的なエラー処理
=IFERROR(
  VLOOKUP(A1, 主テーブル, 2, FALSE),
  IFERROR(
    VLOOKUP(A1, 予備テーブル, 2, FALSE),
    "該当なし"
  )
)

# より読みやすい記述方法
=IFERROR(
  VLOOKUP(A1, 主テーブル, 2, FALSE),
  IFERROR(VLOOKUP(A1, 予備テーブル, 2, FALSE), "該当なし")
)

エラー時の表示オプション

よく使われる表示パターン

# 1. 空白表示
=IFERROR(数式, "")

# 2. ゼロ表示
=IFERROR(数式, 0)

# 3. 文字メッセージ
=IFERROR(数式, "該当なし")
=IFERROR(数式, "計算不可")
=IFERROR(数式, "データ不足")

# 4. ダッシュ表示
=IFERROR(数式, "-")

# 5. 条件付きメッセージ
=IFERROR(数式, IF(条件, "メッセージ1", "メッセージ2"))

用途別推奨表示

用途推奨表示理由
数値計算0後続の計算に影響しない
文字情報"" または "-"見た目がすっきり
検索結果"該当なし"ユーザーに分かりやすい
分析データ"データ不足"原因が明確
一時的な処理""目立たない

注意点とベストプラクティス

注意すべきポイント

1. エラーの隠蔽リスク

# 危険な例:すべてのエラーを隠してしまう
=IFERROR(複雑な数式, "")

# 改善例:段階的なエラー処理
=IF(前提条件チェック, IFERROR(数式, "計算エラー"), "条件不足")

2. 空文字列の扱い

# ""は空白に見えるが、セルとしては非空白
A1: =IFERROR(1/0, "")

# 空白チェックの結果
=ISBLANK(A1)    # FALSE(空白ではない)
=A1=""          # TRUE(空文字列)
=LEN(A1)        # 0(文字数は0)

3. パフォーマンスへの影響

# 非効率な例:毎回複雑な計算を実行
=IFERROR(複雑で重い数式, 0)

# 効率的な例:事前条件チェック
=IF(簡単な前提条件, IFERROR(数式, 0), 0)

ベストプラクティス

1. 適切な粒度でのエラー処理

# 推奨:処理単位でのエラー処理
売上 = IFERROR(単価 * 数量, 0)
利益率 = IFERROR(利益 / 売上, 0)

# 非推奨:全体を一括でエラー処理
結果 = IFERROR(複雑な計算全体, "エラー")

2. 意味のあるエラーメッセージ

# 良い例:原因が分かるメッセージ
=IFERROR(VLOOKUP(A1, マスター, 2, 0), "商品マスターに未登録")

# 悪い例:抽象的すぎるメッセージ
=IFERROR(VLOOKUP(A1, マスター, 2, 0), "エラー")

3. ドキュメント化

# コメント機能でエラー処理の意図を記載
=IFERROR(複雑な数式, 0)  
/* 
コメント:分母が0の場合は0を表示
前提:データ不備時の標準処理
*/

関連関数との比較

IFNA関数との違い(Excel 2013以降)

# IFERROR:すべてのエラーを処理
=IFERROR(VLOOKUP(A1, 範囲, 2, 0), "エラー")

# IFNA:#N/Aエラーのみを処理
=IFNA(VLOOKUP(A1, 範囲, 2, 0), "該当なし")

# 使い分け:特定のエラーだけ処理したい場合はIFNA

ISERROR関数との組み合わせ

# 従来の方法(Excel 2003以前)
=IF(ISERROR(数式), "エラー時の値", 数式)

# IFERRORでの簡略化(Excel 2007以降)
=IFERROR(数式, "エラー時の値")

# IFERRORの方が効率的(数式を1回だけ評価)

高度な活用テクニック

動的なエラーメッセージ

# エラーの種類に応じたメッセージ
=IFERROR(
  VLOOKUP(A1, データ, 2, 0),
  IF(A1="", "検索値が空白", "該当データなし")
)

配列数式でのIFERROR

# 配列全体でのエラー処理
{=IFERROR(A1:A10/B1:B10, 0)}

# Office 365での動的配列
=IFERROR(A1:A10/B1:B10, 0)

条件分岐とIFERRORの組み合わせ

# 複雑な条件処理
=IF(条件1,
  IFERROR(処理1, "エラー1"),
  IF(条件2,
    IFERROR(処理2, "エラー2"),
    "条件なし"
  )
)

トラブルシューティング

よくある問題と解決法

1. IFERRORが効かない場合

# 問題:エラーではない値が返される
=IFERROR(A1/B1, 0)  # B1が空白の場合、0が返される

# 解決:空白チェックを追加
=IF(B1="", 0, IFERROR(A1/B1, 0))

2. 意図しない値が表示される

# 問題:エラー以外の値も置き換えられる
=IFERROR(IF(A1>100, A1, "範囲外"), "エラー")

# 解決:条件を明確にする
=IF(A1="", "未入力", IFERROR(IF(A1>100, A1, "範囲外"), "計算エラー"))

3. パフォーマンスの問題

# 問題:重い計算がエラー時にも実行される
=IFERROR(重い計算(A1), 軽い計算(A1))

# 解決:事前条件チェック
=IF(基本条件チェック(A1), IFERROR(重い計算(A1), 0), 軽い計算(A1))

まとめ

IFERROR関数は、Excelでの実用的な表作成において欠かせない重要な関数です。エラー表示を回避することで、見た目の美しさとユーザビリティの両方を向上させることができます。

重要なポイント

  1. 基本機能:エラーが発生した場合に代替値を表示
  2. 基本構文=IFERROR(値, エラー時の値)
  3. 対象エラー:#DIV/0!、#N/A、#VALUE!など全種類
  4. 主な用途:VLOOKUP、除算、計算式のエラー処理

活用のメリット

効果具体例
見た目の改善エラー表示がなくなり、プロフェッショナルな印象
ユーザビリティ向上分かりやすいメッセージでユーザーガイド
後続処理の安全性エラーによる計算停止を防ぐ
メンテナンス性データ不備があっても表が破綻しない

コメント

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