IFERROR関数の使い方|隠していいエラーと隠してはいけないエラーの見分け方

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の特徴です。この「まとめて」が便利さであり、同時に危うさでもあります。

IFERROR関数の使い方|隠していいエラーと隠してはいけないエラーの見分け方の解説図1

基本の使い方

未入力の行に #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! は、結果を広げる先にデータが残っていることが原因です。置き場所の問題なので、囲っても求めていた表は出てきません。スピル先を空けるのが解決策です。

IFERROR関数の使い方|隠していいエラーと隠してはいけないエラーの見分け方の解説図2

実務でよく使う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通りあります。

  1. 元の各行の数式を IFERROR で包み、エラー行を 0 にする
  2. 元の数式は触らず、合計側で =AGGREGATE(9, 6, D2:D200) と書く

AGGREGATE関数の 9 は合計、6 は「エラー値を無視する」オプションです。2番目のやり方なら、各行のエラー表示は残したまま合計だけが通ります。原因を見えるようにしておきたいときは、こちらを選びます。

③ 隠すなら、件数を横に出す

どうしても表を空欄で見せたい場合は、エラーの件数だけを別のセルに表示しておきます。

=SUMPRODUCT(--ISNA(D2:D200))

#N/A の個数が返ります。0以外になったらマスタの登録漏れを疑う、という運用にすれば、隠しても気づける状態を保てます。

IFERROR関数の使い方|隠していいエラーと隠してはいけないエラーの見分け方の解説図3

隠さずに済ませる手段

印刷のときだけエラーを消す

「画面では原因を見たいが、配布する紙には出したくない」という場面には、シートの設定が用意されています。

ページレイアウト タブ → ページ設定(右下の矢印)→ シート タブ → セルのエラー

ここで「空白」を選ぶと、数式は一切変えずに、印刷結果でだけエラー表示が消えます。IFERRORで包む前に、まずこの設定で足りないかを確かめてください。

エラー行を目立たせる

隠す代わりに色を付けておく方法もあります。条件付き書式の数式ルールに次の式を入れます。

=ISERROR($D2)

適用先を表全体にすれば、エラーを含む行だけが塗られます。作業中のブックでは、消すより目立たせるほうが早く終わります。

原因を突き止める

  • エラーチェック:数式タブ →「エラーチェック」で、シート内のエラーを順に確認できます
  • 数式の検証:長い数式のどこでエラーになったかを1段ずつ進めて確認できます
IFERROR関数の使い方|隠していいエラーと隠してはいけないエラーの見分け方の解説図4

似た関数・機能との使い分け

手段対応バージョン選ぶ場面
IFERROR2016〜種類を問わずまとめて差し替えたい
IFNA2016〜検索の未登録(#N/A)だけを差し替えたい
IF+ISERROR2016〜古い形式のブックに合わせる必要がある
XLOOKUPの第4引数2021〜見つからない場合だけを指定したい。他のエラーは隠れない
AGGREGATE2016〜元の数式を変えずに、集計だけエラーを無視したい
ページ設定の「セルのエラー」—画面では見たい。印刷物にだけ出したくない

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の要点
  • 書き方は=IFERROR(元の数式, エラーの場合の値)。第2引数は省略できない
  • 7種類のエラーを種類を区別せずまとめて差し替える
  • 隠してよいのは#DIV/0!と未入力行の#N/Aまで。#REF!・#VALUE!・#NAME?は隠さない
  • 検索の後始末はIFNA関数が本来の担当。#N/Aだけを拾える
  • 印刷物だけ消したいならページ設定の「セルのエラー」で足りる

※関数の対応バージョンはExcelの一般提供時点の情報にもとづいています。お使いの環境や更新プログラムの適用状況により、利用できる関数やメニューの名称が異なる場合があります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

はじめまして、白石です。製造業の生産管理で15年、毎日の実績集計と帳票づくりをExcelでやってきました。マクロを組もうとして早々に挫折し、そこからは「関数と表の機能だけでどこまでやれるか」でしのいできた口です。部門では「この集計どうやるの」と聞かれる係になり、聞かれた内容を手元にメモし続けました。そのメモがいつのまにか、関数名ではなくやりたいことから引く形になっていて、それがこのサイトのもとになっています。Excelは同じことをやるのに何通りもやり方があって、しかもバージョンによって使える関数が違います。ここでは実際に動かして確かめた式だけを載せ、つまずきやすいところと使えないバージョンを先に書くようにしています。

目次