この記事で分かること
- IFERROR関数の構文
=IFERROR(値, エラーの場合の値)と、財務モデルで使ってよい場面・使ってはいけない場面の線引き #DIV/0!#N/A#VALUE!#REF!#NAME?の原因と、IFERRORがそれらを一括で握りつぶしてしまう構造的なリスク- IFNA・
IF(分母=0,…)・XLOOKUPの第4引数・エラー検出行という4つの代替手段の使い分け - 売上成長率と部門別集計の仮設例で見る「静かに狂う0」の実害と、レビューに耐えるチェック行の作り方
結論:IFERRORは「エラーを消す道具」ではなく「想定内の欠損だけを処理する道具」
まず構文です。
=IFERROR(値, エラーの場合の値)
第1引数の「値」を計算し、その結果がエラー値(#N/A #VALUE! #REF! #DIV/0! #NUM! #NAME? #NULL!)であれば第2引数を返し、エラーでなければ第1引数の計算結果をそのまま返します。Excel 2007以降で利用できます。
この関数は書くのが簡単で、しかも表がきれいになるため、財務モデルでは真っ先に乱用される関数でもあります。しかし実務上の結論は、次の一点に尽きます。
財務モデルにおける原則
IFERRORを「エラーを見えなくする道具」として使うと、そのモデルは壊れても壊れたと分からないモデルになります。使ってよいのは、そのセルでエラーが出ることが仕様として分かっている(=想定内の欠損である)場面に限られます。
理由は単純です。IFERRORはエラーの種類を問わず、第1引数の中で起きたすべてのエラーを等しく握りつぶすからです。「予測初年度は前年値がないので成長率が計算できない」という想定内の#DIV/0!も、「参照先のシートを消してしまった」という致命的な#REF!も、IFERRORにとっては同じ「エラー」です。前者を隠すつもりで巻いた式が、後者まで一緒に隠してしまいます。
そして隠された結果が0だった場合、その0は下流の合計・平均・DCFに何食わぬ顔で流れ込みます。画面上はエラーがゼロ件、モデルは正常に動いているように見え、数字だけが静かに狂う——これが財務モデルにおけるIFERROR事故の典型です。本記事は、この線引きと代替手段を設例つきで整理します。関数そのものの早見表はExcel関数の早見辞典|財務モデリング頻出関数リファレンスを、エラー値の定義は用語集のExcelのエラー値をご覧ください。
前提:5つのエラー値は「別の病気」である
IFERRORの是非を判断するには、そもそも各エラー値が何を意味するのかを切り分けておく必要があります。エラー値は表示上の汚れではなく、Excelが出してくれている診断結果です。
| エラー値 | 意味・主な原因 | 財務モデルでの典型的な発生源 | 隠してよいか |
|---|---|---|---|
#DIV/0! | ゼロまたは空白セルで割った | 予測初年度の成長率、売上ゼロ期のマージン、有利子負債ゼロ時のD/Eレシオ | 条件付きで可(仕様として起きる場合のみ) |
#N/A | 検索値が見つからない | VLOOKUP/MATCH/XLOOKUPでの勘定科目マッピング、比較企業リストの突合 | 条件付きで可(該当なしが正常な場合のみ) |
#VALUE! | 引数の型が合わない(文字列と数値の演算など) | 「1,200百万円」のような文字列混入、空文字 "" を算術演算に使用 | 不可(データ側の欠陥を示す) |
#REF! | 参照先のセル・行・列・シートが削除された | シート整理、行削除、ブック間リンクの切断 | 不可(モデルが壊れている) |
#NAME? | 関数名や定義名のスペルミス、未定義の名前 | 名前定義の削除、旧バージョンでの新関数利用、全角文字混入 | 不可(式そのものが誤り) |
#NUM! | 計算が収束しない・数値範囲外 | IRRの反復計算が収束しない、負の値の平方根 | 原則不可(前提の異常を示す) |
この表の右端を見ると、IFERROR=すべてを一括で捕まえる関数が、いかに乱暴な道具かが分かります。#DIV/0!と#N/Aだけは「隠してよいことがある」のに対し、#REF!と#NAME?は隠した瞬間に事故が確定する種類のエラーです。それでもIFERRORは、この6種類すべてを同じ扱いで飲み込みます。
IFERRORが危険な理由:エラーは「下流に伝わる」ことが最大の防御機能
エラー値には、多くの人が見落としている重要な性質があります。エラーは伝播するということです。あるセルが#REF!になれば、それを参照する合計セルも#REF!になり、その合計を使う企業価値も#REF!になります。目障りですが、これは欠陥ではなく安全装置です。モデルの最終出力が壊れて表示されるからこそ、作った本人が即座に気づけます。
IFERRORは、この安全装置を切ります。エラーを0や空白に置き換えた瞬間、エラーは下流に伝播しなくなり、最終出力は「もっともらしい数字」を返し続けます。
左右の違いは、モデルの精度ではなく可観測性です。壊れたモデルの診断手順は壊れた財務モデルの診断・修復ガイド|エラー種類別のフローチャートで扱っていますが、そもそもIFERRORで塗り固められたモデルは、この診断フローの入口にすら立てません。診断は「エラーが見えている」ことが前提だからです。
仮設例1:部門別集計に混入した1本の#REF!
以下は説明用の仮設例です。ある事業会社の予算モデルで、5セグメントの売上高(単位:百万円)を別シートから拾って合計しているとします。
| セグメント | 正常時 | 事故後:素の参照式 | 事故後:IFERROR(…, 0) |
|---|---|---|---|
| A(国内・法人向け) | 420 | 420 | 420 |
| B(国内・個人向け) | 310 | 310 | 310 |
| C(海外) | 260 | #REF! | 0 |
| D(ライセンス) | 180 | 180 | 180 |
| E(その他) | 130 | 130 | 130 |
| 合計 | 1,300 | #REF! | 1,040 |
素の参照式なら合計が#REF!になるので、開いた瞬間に誰でも異常に気づきます。一方IFERROR版は1,040百万円という、それらしい数字を返します。この1,040がそのまま成長率・マージン・EV/EBITDAへ流れ、最悪の場合はバリュエーションのアウトプットまで到達します。20.0%の過少計上が、どのチェックにも引っかからずに提出物へ入るということです。
この事故が怖いのは、被害の発見が数日〜数週間遅れる点にあります。エラーとして出ていれば5分で直る話が、0として通過すると、外部に出た数字を撤回するという事態になりかねません。
使ってよい3つの場面
とはいえ、IFERROR(および後述のIFNA)を一切使うなという話ではありません。そのセルでエラーが出ることが設計上分かっている場合には、正当な使い道があります。
(1) 予測初年度の成長率・変化率
ヒストリカルの左端や予測の初年度は、前年値が存在しないため成長率が計算できません。これは仕様であり、モデルの欠陥ではありません。ただし後述のとおり、この用途でもIF(前年=0, …)のほうが安全です。
(2) 検索結果が「該当なし」でも正常な照合
勘定科目マッピングや比較企業の突合で、「マスタに存在しない項目は空欄でよい」と決めているなら、該当なしは想定内です。ただしこの場合に使うべきはIFERRORではなくIFNA、あるいはXLOOKUPの第4引数です。理由は次章で述べます。検索関数そのものの選び方はINDEX/MATCHとXLOOKUP実践|VLOOKUPを卒業する理由と使い方を参照してください。
(3) 分母がゼロになることが仕様である比率
有利子負債ゼロの会社のD/Eレシオ、赤字期のPER、売上ゼロ期の各種マージンなど、分母ゼロが正常に起こりうる比率です。この場合の表示は0ではなく"n.a."や空白にすべきです。0と表示すると「レバレッジがゼロ」という意味と「計算不能」という意味が区別できなくなり、平均を取るときに0が混ざって指標が下振れします。
「壊れても気づけるモデル」はExcelの作法で決まる
エラー処理の設計は、セル参照のルール・書式規律・チェック行の置き方といったモデリング作法と一体です。関数単体ではなく、モデル全体を壊れにくく組む手順から学びたい方へ。
仮設例2:成長率列における4つの書き方の比較
以下は説明用の仮設例です。売上高(単位:百万円)と、その成長率を計算する行を考えます。FY2023は左隣に前年データがないため、素の数式は#DIV/0!になります。
| 行 | FY2023 | FY2024 | FY2025 | FY2026 |
|---|---|---|---|---|
| 売上高 | 1,200 | 1,380 | 1,449 | 1,594 |
=C5/B5-1(素) | #DIV/0! | 15.0% | 5.0% | 10.0% |
=IFERROR(C5/B5-1,0) | 0.0% | 15.0% | 5.0% | 10.0% |
=IFERROR(C5/B5-1,"") | (空白) | 15.0% | 5.0% | 10.0% |
=IF(B5=0,"",C5/B5-1) | (空白) | 15.0% | 5.0% | 10.0% |
平常時は、下の3つの書き方に実質的な差がありません。差が出るのは異常が起きたときです。
| 書き方 | FY2025の参照が#REF!になったとき | 4年平均をAVERAGEで取ると | 評価 |
|---|---|---|---|
=C5/B5-1 | #REF!が表示され、下流にも伝播 | #DIV/0!で計算不能(=異常が見える) | 安全だが表が汚い |
=IFERROR(…,0) | 0.0%と表示され、異常が見えない | 初年度とFY2025の0%が混ざり 6.3%(正 10.0%) | 使用しない |
=IFERROR(…,"") | 空白になり、異常が見えない | AVERAGEは空白を無視するが、乗算に使うと#VALUE! | 限定的 |
=IF(B5=0,"",C5/B5-1) | #REF!がそのまま表示される | #REF!が伝播し計算不能(=異常が見える) | 推奨 |
=IFERROR(…,0)版の平均は (0+15.0+0.0+10.0)/4=6.3%となり、正しい平均 (15.0+5.0+10.0)/3=10.0%から3.8ポイント下振れします。ポイントは、=IF(B5=0,"",C5/B5-1)が「前年売上がゼロまたは空白のときだけ空白にする」という条件を明示していることです。条件を明示すれば、その条件に当てはまらないエラー(#REF!や#VALUE!)は握りつぶされず、そのまま表示されます。IFERRORとIFの本質的な差は、「エラーだから隠す」のか「この条件のときだけ隠す」のかという設計思想の違いです。
代替手段の使い分け:IFNA・XLOOKUPの第4引数・チェック行
IFNAは「該当なし」だけを捕まえる
=IFNA(値, #N/Aの場合の値)
第1引数が#N/Aのときだけ第2引数を返します。#REF!や#VALUE!はそのまま表示されます。Excel 2013以降で利用できます。
INDEX/MATCHやVLOOKUPを使う場面で、IFERRORではなくIFNAを選ぶべき理由は明快です。IFERRORで包むと、MATCHの検索範囲が削除されて#REF!になった場合も、検索値の型が違って#VALUE!になった場合も、「該当なし」と同じ扱いで空白になります。マッピングが壊れているのに「該当なしが多いだけ」に見えてしまうのは、実務で最も見つけにくい不具合のひとつです。
XLOOKUP(Microsoft 365およびExcel 2021以降)を使えるなら、そもそも第4引数if_not_foundで該当なしを直接指定できます。=XLOOKUP(検索値, 検索範囲, 戻り範囲, "該当なし")のように書けば、IFERRORもIFNAも不要になり、しかも他のエラーは素通りします。これが最も安全です。
エラー検出行を置く
「エラーを隠さない」だけでは、モデルが大きくなるとエラーの発生を見落とします。そこで、エラーを集約して数える行を置きます。
=SUMPRODUCT(–ISERROR(C10:H40))
指定範囲内のエラーセル数を返します。ISERRORが返すTRUE/FALSEの配列を--(二重単項マイナス)で1/0に変換し、SUMPRODUCTで合計する定番の書き方です。正常時は0、1以上ならどこかが壊れています。#N/Aを許容している範囲ではISERR(#N/A以外のエラーを判定)に置き換えます。
この検出行を各シートの決まった位置に置き、サマリーシートで=SUM(各シートの検出セル)を取れば、ブック全体のエラー件数が1セルで分かります。あとは条件付き書式でエラーを光らせる|モデルを守る5つのレシピのとおり、そのセルが0以外なら赤く塗るルールを入れておけば、壊れた瞬間に視覚的に気づけます。
| 状況 | 推奨する書き方 | 理由 |
|---|---|---|
| XLOOKUPで該当なしが正常 | =XLOOKUP(検索値,検索範囲,戻り範囲,"該当なし") | 関数自身の機能。他のエラーは素通りする |
| INDEX/MATCHで該当なしが正常 | =IFNA(INDEX(…,MATCH(…)),"該当なし") | #N/Aのみ捕捉。#REF!は表示される |
| 分母ゼロが仕様として起きる比率 | =IF(分母=0,"n.a.",分子/分母) | 条件を明示。0と計算不能を区別できる |
| 想定外のエラーを検出したい | =SUMPRODUCT(--ISERROR(範囲))+条件付き書式 | 隠さずに「数えて光らせる」 |
| 提出資料の見栄えを整えたい | モデル本体は素のまま、出力用シートでのみ処理 | 計算層と表示層を分離する |
最後の行が重要です。「表がエラーだらけでは客先に出せない」という問題は本物ですが、その解決策はモデル本体を汚染することではなく、計算層と表示層を分けることです。計算シートはエラーが見える状態のまま置き、プレゼン用のリンクシートでのみ表示を整えます。この分離はCHOOSE関数の使い方|財務モデルのシナリオ切替を作る方法で扱う入力層・計算層・出力層の分離と同じ発想です。
IB・PE・FASの現場でIFERRORの多用が減点される理由
投資銀行やPEファンド、FASのモデルレビューでは、IFERRORの多用は明確なマイナス評価になります。理由は「格好悪いから」ではなく、次の4点が実務上の支障になるからです。
(1) エラーセルの一括検出ができなくなる
レビュアーはまずCtrl+G →「セル選択」→「数式」→「エラー値」でブック内のエラーセルを一括抽出します。IFERRORで包まれたセルはこの検索に一切引っかかりません。同様に、モデル監査アドインのエラー検出機能も無力化されます。読解の一般的な手順はExcelの数式監査の技術|F2・F9・数式表示・トレースで他人のモデルを読み解くにまとめています。
(2) 出力の0が何を意味するか判別できない
アウトプットに並ぶ0が「本当にゼロなのか」「エラーを埋めた0なのか」を、式を1本ずつ開かないと判別できません。レビュー時間の大半が、この判別作業に消えます。
(3) 意図が読めない
IFERRORは「エラーが起きうることを作成者が認識していた」証拠にはなりますが、どのエラーを想定していたのかは式から読み取れません。=IF(B5=0,"",…)なら「前年ゼロを想定していた」と一目で分かります。ハードコーディングと同様、意図が読めない式はレビュアーの信頼を損ないます。
(4) チェック体系そのものが機能しなくなる
財務モデルのクオリティチェック(QC)完全ガイド|提出前に回す4層チェックで扱うチェック体系は、BSバランス差額・合計と内訳の一致・エラー件数といった検算を積み上げて成立します。IFERRORが広く巻かれていると、このうちエラー件数のチェックが常に0を返し続け、チェック行が飾りになります。
実務的な運用ルールとしては、次の3点で十分です。第一に、IFERRORを書くときはそのセルでどのエラーが想定されるかをコメントか脚注に残す。第二に、可能な限りIFNAまたはIFの条件式に置き換える。第三に、モデル完成時にIFERRORの使用箇所を数式検索(Ctrl+F、検索対象=数式)で棚卸しし、想定外の場所に入っていないか確認する。
モデリングテストではどう扱うか
採用選考の財務モデリングテストでも、考え方は同じです。財務モデリングテスト90分・180分の攻略法|時間配分・作成順序・合格水準で述べているとおり、限られた時間で組むときこそエラーは見えていたほうが有利です。IFERRORで埋めると、自分のミスに自分で気づけなくなり、BSがバランスしない原因の切り分けにかえって時間を取られます。表示を整えるのは、計算が正しいことを検算で確認した後の最後の数分で十分です。
よくある間違い5つ
(1) IFERROR(…,"")で文字列化し、後続の計算が#VALUE!になる
空文字""は数値ではなく文字列です。SUMやAVERAGEは無視してくれますが、=前年売上*(1+成長率)のような算術演算に使うと#VALUE!になります。皮肉なことに、エラーを隠すために書いた式が新しいエラーを生みます。計算に使う行では空文字を返さず、条件式で分岐させてください。
(2) IFERROR(…,0)でSUMが静かに狂う
本記事の仮設例1がまさにこれです。0は数値なので合計にも平均にも参加します。しかも「合計が減った」という事実は、比較対象がなければ誰も検知できません。
(3) 行全体・列全体にIFERRORを一括で巻く
「とりあえず全部包んでおこう」という発想が最も危険です。1つのセルで正当だった処理を数百セルにコピーすると、モデル全体がエラーを検出できない状態になります。
(4) IFERRORのネストで式が読めなくなる
=IFERROR(IFERROR(VLOOKUP(…),VLOOKUP(…)),0)のような多段ネストは、レビュアーが解読を諦める典型です。複数マスタの照合が必要なら、中間列を作って段階を分けるほうが速く、しかも検算できます。ネストの限界についてはネストIFとIFS関数も参照してください。
(5) 原因を直さずにIFERRORで蓋をする
#REF!や#NAME?が出たとき、参照を直さずにIFERRORを巻いて済ませてしまうケースです。これは修復ではなく隠蔽であり、次に触る人(半年後の自分を含む)が必ず踏みます。エラーが出たら、まず数式の追跡と検証の手順で原因セルまで遡ってください。
よくある質問(FAQ)
Q. IFERRORとIFNAはどちらを使うべきですか。
A. 検索関数(VLOOKUP/INDEX-MATCH/MATCH)まわりでは、原則IFNAです。IFNAは#N/Aだけを捕まえるので、参照範囲の削除による#REF!や型不一致による#VALUE!は表示されたままになります。XLOOKUPが使える環境なら、第4引数if_not_foundを使うのがさらに安全です。IFERRORを選ぶのは、複数種類のエラーを同一に扱ってよいと明確に判断できる場合だけです。
Q. #DIV/0!を非表示にしたいだけなのですが、それもだめですか。
A. 「非表示にしたい」のがモデル本体なのか提出資料なのかで答えが変わります。提出資料の見栄えなら、出力用シートを分けるか条件付き書式で対処してください。モデル本体で処理する場合は、IFERRORではなく=IF(分母=0,"n.a.",分子/分母)のように条件を明示してください。これなら#DIV/0!以外のエラーは隠れません。
Q. IFERRORはパフォーマンス(再計算速度)に影響しますか。
A. IFERROR自体は揮発性関数ではなく、単体の負荷は小さい関数です。ただしIFERRORは第1引数を実際に計算してからエラー判定を行うため、重い配列計算やVLOOKUPを包むと計算量が減るわけではありません。速度目的でIFERRORを外す意味は薄く、外すべき理由はあくまで監査可能性です。
Q. 既存のモデルにIFERRORが大量に入っています。どこから直せばよいですか。
A. Ctrl+Fで検索対象を「数式」にしてIFERRORを検索し、使用箇所を一覧化するところから始めます。優先順位は、(1) 合計・平均などの集計に流れ込む行、(2) バリュエーション出力に直結する行、(3) 表示専用の行、の順です。(1)と(2)を条件式かIFNAに置き換え、同時にエラー検出行を新設すれば、全部を直さなくても検知能力はかなり回復します。
Q. エラー検出行は具体的にどこに置けばよいですか。
A. 各シートの同じ行番号(例:1行目や、モデル領域のすぐ上)に固定するのが管理しやすい方法です。範囲はそのシートの計算領域全体を指定し、結果をサマリーシートに集約します。BSバランス差額や合計一致チェックと同じ「チェックブロック」にまとめ、1つでも異常があればサマリーの1セルが赤くなる設計にしておくと運用が回ります。
まとめ
IFERROR関数は=IFERROR(値, エラーの場合の値)という単純な構文ですが、財務モデルにおいては「エラーの種類を問わず一括で握りつぶす」という性質が最大の論点になります。エラーが下流に伝播することは欠陥ではなく安全装置であり、IFERRORはその安全装置を切る操作だと理解してください。
使ってよいのは、予測初年度の成長率、該当なしが正常な照合、分母ゼロが仕様として起きる比率といった想定内の欠損に限られます。そしてその場合ですら、IFERRORよりIF(条件, …)やIFNA、XLOOKUPの第4引数のほうが、隠す対象を限定できるぶん安全です。
実務では、隠す設計ではなく数えて光らせる設計に切り替えるのが正解です。=SUMPRODUCT(--ISERROR(範囲))でエラー件数を集約し、条件付き書式で異常時に点灯させ、サマリーの1セルでブック全体の健全性が分かる状態を作る。この体制があれば、表の見栄えとモデルの監査可能性を両立できます。
エラー処理を含めた「壊れないモデル」をExcelで組む
エラー設計・チェック行・書式規律は、個別の関数を覚えるだけでは身につきません。実際にモデルを組みながら、レビューに耐える作法を通しで習得したい方へ。
出典・参考(2026年8月21日確認)
- Microsoft「IFERROR 関数」Microsoft サポート——構文、捕捉されるエラー値の種類、対応バージョン
- Microsoft「IFNA 関数」Microsoft サポート——
#N/Aのみを捕捉する挙動、対応バージョン - Microsoft「XLOOKUP 関数」Microsoft サポート——第4引数 if_not_found の仕様、対応バージョン
- Microsoft「Excel の数式のエラーを検出する」Microsoft サポート——エラー値の種類と原因、エラーチェックの手順
- Microsoft「ISERROR 関数・IS 関数」Microsoft サポート——ISERRORとISERRの判定対象の違い
- Microsoft「Excel の数式を最適化して処理速度を上げる」Microsoft Learn——揮発性関数と再計算の考え方
※本記事は教育目的の一般的な解説であり、法務・税務・投資助言ではありません。設例は理解のための仮設例です。