IFERROR関数は、数式の結果がエラーだったときだけ、指定した別の値に差し替える関数です。書き方は =IFERROR(元の数式, エラーの場合の値) の1行。ただし、囲めば囲むほど原因が見えなくなる性質があるので、エラーの種類ごとに隠してよいかを決めるのが実務の作法です。
この記事でわかること
- IFERROR関数の2つの引数と基本の書き方
- エラーの種類別に、隠してよい/隠してはいけないの判断基準
#DIV/0!を空欄にする・検索の未登録だけを空欄にする書き方- 隠さずに済ませる手段(IFNA関数・印刷時だけ消す設定・件数を横に出す)
- 包んだのにエラーが消えない、他人の環境で全部空欄になる、といったつまずき
IFERROR関数の構文と引数
構文
=IFERROR(値, エラーの場合の値)
| 引数 | 指定するもの | 注意点 |
|---|---|---|
| 値 | 検査したい数式そのもの | ここがエラーでなければ、そのままの結果が返る |
| エラーの場合の値 | エラーだったときに表示するもの | ""(空欄)・0・"該当なし" など。省略できない |
IFERROR関数は、Excel 2016・2019・2021・Microsoft 365 のいずれでも使えます。動的配列関数のようなバージョン差はありません。
「エラーのとき」に含まれるもの
IFERRORが差し替えの対象とするのは、次の7種類のエラー値です。
#N/A / #VALUE! / #REF! / #DIV/0! / #NUM! / #NAME? / #NULL!
種類を区別せず、まとめて飲み込むのがIFERRORの特徴です。この「まとめて」が便利さであり、同時に危うさでもあります。

基本の使い方
未入力の行に #DIV/0! が並ぶのを止める例です。C列(実績)÷ B列(目標)で達成率を出しています。
=IFERROR(C2/B2, "")
B2が空欄のうちは空欄のまま、数字が入った行だけ達成率が表示されます。
⚠️ 空欄にした結果は「空白セル」ではない
第2引数に "" を指定したセルは、見た目は空欄でも長さ0の文字列が入っています。ここを取り違えると、次のようなずれが起きます。
COUNTAはその行を数えます(見た目は空欄なのに件数が合わない)ISBLANKはFALSEを返します- そのセルを別の数式で計算に使うと
#VALUE!になります
集計に回す列なら、"" ではなく 0 を返すほうが安全です。「表として見せる列」と「計算に使う列」で使い分けてください。
数式を2回書かなくてよい
IFERROR登場前は =IF(ISERROR(元の数式), "", 元の数式) と、同じ数式を2回書く必要がありました。IFERRORは1回書くだけで済み、評価も1回で終わります。式が長いほど、書き間違いも再計算の負荷も減ります。
エラーの種類別・隠してよいかの判断
ここがIFERRORの本題です。判断の基準は1つだけ。
「読み手にとって想定内の空欄」は隠してよい。「作った人の間違い」は隠してはいけない。
| エラー | 主な意味 | 隠す判断 |
|---|---|---|
#DIV/0! | 0または空白で割った | ○ 入力待ちの行に出るだけなら隠してよい代表格 |
#N/A | 検索値が見つからない | △ 未入力行なら隠してよい。マスタ整備中は隠さない |
#NUM! | 計算できない値・扱える範囲を超えた | △ 原因を確認してから。桁あふれなら設計の問題 |
#VALUE! | 引数の型が違う(文字列を計算した等) | × 原因はデータ側。隠すと不正なデータが残り続ける |
#REF! | 参照先が消えている(行・列・シートの削除) | × 数式が壊れた証拠。隠してはいけない |
#NAME? | 関数名や名前の綴り違い、バージョン非対応 | × 直せば必ず消える。隠す理由がない |
#NULL! | 範囲の指定ミス(半角スペースで区切った) | × 単純な書き間違い |
なぜ #REF! を隠してはいけないか
#REF! は、数式が指していた場所そのものが無くなったときに出ます。IFERRORで包むと表は静かに空欄になり、誰も壊れたことに気づけません。
集計表であれば、合計だけが以前より小さい状態で運用が続きます。エラー表示は不具合の通知であって、消すべき汚れではないという前提に立つと、判断を間違えません。
#SPILL! #CALC! は囲む対象ではない
動的配列関数(FILTER・UNIQUEなど)で出る #SPILL! は、結果を広げる先にデータが残っていることが原因です。置き場所の問題なので、囲っても求めていた表は出てきません。スピル先を空けるのが解決策です。

実務でよく使う3パターン
① 検索の未登録だけを空欄にする
VLOOKUP関数やXLOOKUP関数の結果を包む、いちばん多い使い方です。
=IFERROR(VLOOKUP($A2, $F$2:$H$50, 2, FALSE), "")
ただしこの書き方は、範囲を消してしまった #REF! も、列番号を間違えた #VALUE! も一緒に空欄にします。未登録だけを空欄にしたいなら、IFNA関数のほうが正確です。
=IFNA(VLOOKUP($A2, $F$2:$H$50, 2, FALSE), "")
IFNAは #N/A だけを拾い、ほかのエラーはそのまま表示します。検索の後始末は、IFERRORではなくIFNAが本来の担当と考えてください。
② 合計にエラーが混ざるのを避ける
#N/A が1つでも混ざると、その列のSUMもエラーになります。対処は2通りあります。
- 元の各行の数式を IFERROR で包み、エラー行を
0にする - 元の数式は触らず、合計側で
=AGGREGATE(9, 6, D2:D200)と書く
AGGREGATE関数の 9 は合計、6 は「エラー値を無視する」オプションです。2番目のやり方なら、各行のエラー表示は残したまま合計だけが通ります。原因を見えるようにしておきたいときは、こちらを選びます。
③ 隠すなら、件数を横に出す
どうしても表を空欄で見せたい場合は、エラーの件数だけを別のセルに表示しておきます。
=SUMPRODUCT(--ISNA(D2:D200))
#N/A の個数が返ります。0以外になったらマスタの登録漏れを疑う、という運用にすれば、隠しても気づける状態を保てます。

隠さずに済ませる手段
印刷のときだけエラーを消す
「画面では原因を見たいが、配布する紙には出したくない」という場面には、シートの設定が用意されています。
ページレイアウト タブ → ページ設定(右下の矢印)→ シート タブ → セルのエラー
ここで「空白」を選ぶと、数式は一切変えずに、印刷結果でだけエラー表示が消えます。IFERRORで包む前に、まずこの設定で足りないかを確かめてください。
エラー行を目立たせる
隠す代わりに色を付けておく方法もあります。条件付き書式の数式ルールに次の式を入れます。
=ISERROR($D2)
適用先を表全体にすれば、エラーを含む行だけが塗られます。作業中のブックでは、消すより目立たせるほうが早く終わります。
原因を突き止める
- エラーチェック:数式タブ →「エラーチェック」で、シート内のエラーを順に確認できます
- 数式の検証:長い数式のどこでエラーになったかを1段ずつ進めて確認できます

似た関数・機能との使い分け
| 手段 | 対応バージョン | 選ぶ場面 |
|---|---|---|
| IFERROR | 2016〜 | 種類を問わずまとめて差し替えたい |
| IFNA | 2016〜 | 検索の未登録(#N/A)だけを差し替えたい |
| IF+ISERROR | 2016〜 | 古い形式のブックに合わせる必要がある |
| XLOOKUPの第4引数 | 2021〜 | 見つからない場合だけを指定したい。他のエラーは隠れない |
| AGGREGATE | 2016〜 | 元の数式を変えずに、集計だけエラーを無視したい |
| ページ設定の「セルのエラー」 | — | 画面では見たい。印刷物にだけ出したくない |
XLOOKUP関数を使える環境なら、そもそも包む必要がありません。
=XLOOKUP($A2, $F$2:$F$50, $G$2:$G$50, "該当なし")
第4引数は「見つからなかったとき」だけに反応します。範囲の指定ミスは今までどおりエラーとして表に出るため、原因の切り分けが保たれます。
よくある質問
Q1:第2引数は "" と 0 のどちらがいいですか?
その列を後で計算に使うなら 0、見せるだけなら "" です。"" は数値ではないため、そのセルを掛け算や引き算に使うと #VALUE! になります。合計だけならエラーにはなりませんが、COUNTAでは1件として数えられます。
Q2:IFERRORで包んだのに、まだエラーが表示されます。
包む位置がずれている可能性があります。=IFERROR(A2, "") / IFERROR(B2, "") のように割り算の外側を包んでいない書き方だと、割り算そのもので発生した #DIV/0! は残ります。数式全体を =IFERROR(A2/B2, "") の形で包み直してください。参照先のセルが既にエラーの場合も、そのセル自体を直さなければ伝播が止まりません。
Q3:エラーの種類を数式の中で見分けられますか?
見分けられます。ISNA は #N/A かどうか、ISERR は #N/A 以外のエラーかどうか、ISERROR はすべてのエラーかどうかを判定します。種類ごとに違う表示を出したいときは、これらとIF関数を組み合わせてください。
Q4:IFERRORを多用すると重くなりますか?
包むこと自体の負荷はほとんどありません。対象の数式を1回だけ評価するため、同じ式を2回書く IF(ISERROR(…), …, …) より軽くなります。重さの原因は、包み方ではなく中の数式(広すぎる範囲や大量の検索)にあります。
Q5:他の人に渡したら、表全体が空欄になっていました。
包んだ数式の中に、相手の環境に無い関数が含まれていないかを確認してください。XLOOKUP関数やFILTER関数を Excel 2019 以前で開くと #NAME? になりますが、IFERRORはこの #NAME? も飲み込むため、空欄になるだけで理由が表に出ません。配布するブックでは、対応バージョンの古い関数で組むか、IFNAに置き換えて #NAME? を表示させるほうが安全です。
まとめ
- 書き方は
=IFERROR(元の数式, エラーの場合の値)。第2引数は省略できない - 7種類のエラーを種類を区別せずまとめて差し替える
- 隠してよいのは
#DIV/0!と未入力行の#N/Aまで。#REF!・#VALUE!・#NAME?は隠さない - 検索の後始末はIFNA関数が本来の担当。
#N/Aだけを拾える - 印刷物だけ消したいならページ設定の「セルのエラー」で足りる
※関数の対応バージョンはExcelの一般提供時点の情報にもとづいています。お使いの環境や更新プログラムの適用状況により、利用できる関数やメニューの名称が異なる場合があります。

