IFERROR関数の練習問題(全5問)

色のついたセルに数式を入力して Enter。選択枠の右下の四角をドラッグすると、下や右へまとめて入力できます。

0 / 5 問クリア
Q1

0で割ったところを「-」にする

D3 に客単価(売上 ÷ 客数)を求めてください。客数が 0 でエラーになるときは「-」と表示します。

解説を見る

客数が 0 のあいだは #DIV/0! になるため「-」が表示されます。客数を入れると、IFERROR は何もせず割り算の結果をそのまま返します。IFERROR は普段は何もせず、エラーのときだけ働く関数です。

模範解答: =IFERROR(B3/C3,"-")

IFERROR関数は、式の結果がエラーになったときだけ、指定した別の値に置き換えて表示する関数です。

書き方
=IFERROR(式, エラーのときに表示する値)
=IFERROR(B3/C3,"-")

IFERROR関数とは

IFERROR(イフエラー)関数は、式がエラーになったときだけ、別の値に差し替える関数です。

表を作っていると、式そのものは正しいのにエラーが出ることがあります。まだ数量を入力していない行の #DIV/0!、名簿に無いコードを探したときの #N/A。どちらも「壊れている」わけではなく、計算する材料がまだ揃っていないだけです。

そういう場所を - や「該当なし」に置き換えて、表を読みやすく保つのが IFERROR の役割です。

2つの引数

=IFERROR(式, エラーのときに表示する値)
位置 意味
1つめ 本来やりたい計算。ここがエラーになるかどうかを見る
2つめ エラーだったときに代わりに表示する値

エラーでなければ、1つめの結果がそのまま表示されます。普段は何もしない関数だと考えると分かりやすいです。

#DIV/0! を「-」に置き換える

売上を客数で割って客単価を出す表を考えます。客数がまだ 0 の行は #DIV/0! になります。

=B3/C3            → #DIV/0!
=IFERROR(B3/C3,"-")   → -

文字を表示したいときは " で囲みます。囲み忘れると #NAME? になるので注意してください。これは エラー値の意味と直し方 で扱った、Excel が知らない言葉を名前だと解釈してしまう現象です。

#N/A を「該当なし」に置き換える

VLOOKUP で探した値が見つからないと #N/A になります。

=IFERROR(VLOOKUP(B6,A2:C4,2,FALSE),"該当なし")

登録されていないコードを入力しただけ、という場面ではエラーのままにしておく理由がありません。IFERROR が最もよく使われるのはこの組み合わせです。

VLOOKUP そのものの書き方は VLOOKUP関数の使い方 を参照してください。

空欄にしたいときは ""

" を2つ続けて書くと、何も表示しないという意味になります。

=IFERROR(C3/B3,"")

- すら出したくない、まだ入力していない行は真っ白にしておきたい、というときに使います。

ただし、これは見た目が空欄になるだけで、セルは空ではありません。紛らわしいのは、COUNTBLANK が空欄として数える一方で、COUNTA も「値がある」として数えることです。両方に数えられるため、「空欄の数」と「入力済みの数」を足すと行数を超えます。本当に空のセルは COUNTBLANK にしか数えられないので、ここが食い違ったときは "" を疑ってください。

つまずきポイント: 隠していいエラーと、隠すと危ないエラー

ここが IFERROR で一番大事なところです。

IFERROR は、エラーの種類を区別しません。 どんなエラーでもまとめて2つめの値に置き換えます。便利に見えますが、これは式の間違いまで隠してしまうということです。

エラー 何が起きているか 隠していいか
#DIV/0! 分母がまだ 0 多くの場合よい。入力待ちの状態
#N/A 探したが表に無かった 多くの場合よい。登録が無いだけ
#REF! 参照先が消えた 危ない。式が壊れている
#NAME? 関数名や文字の書き方を間違えた 危ない。打ち間違い
#VALUE! 数値の列に文字が混ざっている 危ない。データ側の問題

たとえば VLOOKUP を IFERROR で包むと、列番号を間違えた #REF! まで「該当なし」と表示されます。本当はコードが登録されているのに、式の間違いで見つからないだけ。それが「該当なし」という、いかにも正常そうな顔で表に並びます。

「エラーが消えた」と「正しくなった」は違います。 IFERROR はエラーを消す関数であって、直す関数ではありません。

安全な使い方は、先に原因を確かめてから包むことです。エラーが出たらまず エラー値の意味と直し方 の手順で原因を特定し、「これは想定内だ」と判断できたものだけを IFERROR で包みます。

なお、#N/A だけを置き換える IFNA という関数もあります。VLOOKUP と組み合わせるなら、#REF!#VALUE! を隠さずに残せるぶん、IFNA のほうが安全です。比較的新しい Excel で使えます。

包む場所を間違えない

エラーが混ざった列を合計すると、合計欄にもエラーが伝わります。このとき、合計の式を IFERROR で包んではいけません。

=IFERROR(SUM(D2:D4),0)     ← 合計が丸ごと 0 になる

SUM はエラーを含む範囲を受け取ると、その時点でエラーを返します。それを IFERROR が受け取るので、正常な行の分まで消えて 0 になります

正しいのは、エラーが出ている行のほうを包むことです。

D3: =IFERROR(B3/C3,0)      ← エラーの行だけ 0 にする
D5: =SUM(D2:D4)            ← 合計は普通に書ける

エラーは参照している先へ伝わっていくので、上流で止めるのが原則です。合計欄で困ったときほど、原因の行に戻ってください。

文字で返すか、数値で返すか

2つめの引数に何を書くかは、そのセルを後で計算に使うかで決めます。

書き方 表示 合計に使えるか
=IFERROR(式,"-") - 文字なので合計に入らない
=IFERROR(式,0) 0 数値なので合計に入る
=IFERROR(式,"") 空欄 文字なので合計に入らない

"0" のように引用符で囲むと文字の 0 になり、見た目は同じでも合計に入りません。数値として返したいときは 0 と引用符なしで書きます。

IFERROR が効かないもの

すべての困りごとに効くわけではありません。

表示 IFERROR で消せるか
##### 消せない。エラーではなく列幅が足りないだけ。列を広げる
循環参照の警告 消せない。式が自分自身を参照している。式を直す
0 や空欄 対象外。エラーではないので、そのまま表示される

古い書き方との違い

IFERROR が無かった頃は、次のように書いていました。

=IF(ISERROR(B3/C3),"-",B3/C3)

同じ計算を2回書く必要があり、式が長くなるうえ、片方だけ直して食い違う事故が起きます。IFERROR ならこう書けます。

=IFERROR(B3/C3,"-")

古い資料やネット上の例では前者の書き方も見かけますが、いま新しく書くなら IFERROR で構いません

関連する関数

関数 用途
IFNA #N/A だけを置き換える。VLOOKUP と組み合わせるならこちらが安全
IF 条件によって表示を変える。エラー以外の分岐に使う
VLOOKUP 表から値を探す。#N/A の発生源になりやすい
COUNTBLANK 空欄を数える。"" で空欄に見せたセルも数える(COUNTA にも数えられる)

次に進むには

IFERROR は「エラーを見せない」ための関数でした。次は条件によって表示そのものを変える書き方に進むと、表の見せ方をより細かく作り込めるようになります。エラーかどうかではなく、値の大小や一致で分けるのが IF関数 です。