売上を件数で割って「1件あたり」を出す表で、件数が0の行に「#DIV/0!」が出ることがあります。0で割ることはできないので、エラーそのものは正しい反応です。ただ、表に残ると見づらく、ほかの集計まで止まります。消し方は2通りあり、それぞれ注意があります。
例として、A列に売上、B列に件数が入った表を使います。
2行目:売上 12000/件数 4
3行目:売上 8000/件数 0
4行目:売上「1万」/件数 2(売上が文字で入ってしまった行)
5行目:売上 9000/件数(空)
■そのまま割ると
=A2/B2
見本で計算した結果は、2行目が 3000、3行目と5行目が #DIV/0!、4行目は #VALUE!(文字は割れない)でした。空のセルは0として扱われるので、5行目も #DIV/0! になります。
■消し方1:IFERROR でまとめて消す
=IFERROR(A2/B2,"")
エラーになったら空にする、という書き方です。3〜5行目はすべて空になりました。短くて覚えやすいのが良いところです。
■消し方2:IF で「件数が0なら」と条件を書く
=IF(B2=0,"",A2/B2)
件数が0(空のセルも0扱い)のときだけ空にします。見本では3行目と5行目が空になり、4行目は #VALUE! のまま残りました。
■注意1:IFERROR は「入力ミス」まで隠す
IFERROR は、0で割ったとき以外のエラーも全部消します。見本の4行目の「1万」は入力ミスなのに、IFERROR では空になってしまい、気づけません。
・0件の行だけ空にしたい → IF で条件を書く
・どんなエラーでも表に出したくない → IFERROR
という使い分けにしておくと、入力ミスが表に残り、直すきっかけになります。
■注意2:空にした "" は、足し算でエラーになる
"" は「何もない」ではなく「長さ0の文字」です。IFERROR の結果をD列に入れて確かめると、
=AVERAGE(D2:D5) → 3000("" の行は平均から外れる)
=SUM(D2:D5) → 3000
=D3+1 → #VALUE!
=N(D3)+1 → 1
になりました。AVERAGE や SUM は "" を飛ばしますが、+で直接足すとエラーに戻ります。"" の入った列を別の式で使うときは、SUM で足すか、N() で数に直してから使います。
■まとめ
・0で割ると #DIV/0!、文字を割ると #VALUE!
・0件の行だけ空にするなら =IF(B2=0,"",A2/B2)
・=IFERROR(A2/B2,"") は短いが、入力ミスのエラーも隠す
・"" の列は AVERAGE・SUM なら飛ばされるが、+で足すと #VALUE!
※式は Excel 互換の計算ライブラリ(Python の formulas)で見本の表を計算して確かめました。Google スプレッドシートや Excel の画面そのものでは試していません。
「この表のエラーをこう消したい」「集計の式を作ってほしい」という式づくりは、出品中の「スプレッドシート関数・GASを1つお作りします」でもお受けしています。購入前のご相談だけでも大丈夫です。
この記事は生成AI(Claude)を使って書き、式は上の方法で計算して確かめています。