#DIV/0!は、数式が0か空のセルで割ると表示されます(空のセルは0として扱われます)。C2が0か空白の間、=B2/C2は#DIV/0!を返します。=IF(C2=0,"",B2/C2)は先に割る数を確かめ、代わりにセルを空のままにします。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Sales | Calls | Per call | Per call (checked) |
| 2 | Ana | 1200 | 40 | 30 | 30 |
| 3 | Ben | 900 | 0 | #DIV/0! | |
| 4 | Cy | 600 | #DIV/0! | ||
| 5 | Dee | 750 | 25 | 30 | 30 |
#DIV/0! 0 または空のセルで割っています。D3とD4は#DIV/0!を表示します。Benの電話は0件で、Cyのセルは空だからです。E列はAnaとDeeに30と30を表示し、ほかの2人には何も表示しません。C4に数値を入力すると、どちらの列も埋まります。
このエラーが正しいことも多くあります。0で割った答えはなく、ここではデータがまだないという意味だからです。空白や0にするとシートは見やすくなりますが、どちらが正直かを決めてください。AVERAGEは0を数えますが、空白の""は飛ばします。
IFかIFERRORで#DIV/0!を直す
どちらの数式もエラーを取り除きます。違うのは、ほかに何を隠すかです。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Sales | Calls | IF(C=0) | IFERROR |
| 2 | Ana | 1200 | 40 | 30 | 30 |
| 3 | Ben | 900 | 0 | 0 | 0 |
| 4 | Cy | 600 | 0 | 0 | |
| 5 | Dee | n/a | 25 | #VALUE! | 0 |
BenとCyには、どちらも0を表示します。Deeの売上には文字列のn/aというデータの誤りが入っています。IFの方法は#VALUE!を表示してそれを知らせ、IFERRORの方法はDeeが何も売らなかったかのように0を表示します。予想される問題が0だけならIF(C2=0,...)を、どんなエラーでも同じ代わりの値にしたいならIFERRORを使います。この選び方についてはIFERRORのページで詳しく説明しています。
判定は=IF(C2,B2/C2,0)とも書けます。0以外の数値はTRUEとして扱われるからです。短くなりますが、読みにくくなります。
AVERAGEやAVERAGEIFでの#DIV/0!
AVERAGEは合計を個数で割ります。数える数値がないと、0で割ることになります。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Sales | Rep | Average | ||
| 2 | Ana | 1200 | Dan | #DIV/0! | ||
| 3 | Ben | 900 | #DIV/0! | |||
| 4 | Ana | 800 | ||||
| 5 | Cy | 600 | ||||
| 6 | Ben | 700 |
#DIV/0! 0 または空のセルで割っています。Danの売上の行はないので、F2のAVERAGEIFには平均するものがありません。F3は空のC列を平均していて、結果は同じです。E2をAnaに変えると、F2は1200と800の平均1000を表示します。Excelで空の場合を扱う方法は2つあります:
=IFERROR(AVERAGEIF(A2:A6,E2,B2:B6),0)
=IF(COUNTIF(A2:A6,E2)=0,"no sales",AVERAGEIF(A2:A6,E2,B2:B6))
2つ目は、結果がない理由を示します。AVERAGEIFSや普通の=SUM(B2:B6)/COUNT(B2:B6)も同じように動きます。条件についてはAVERAGEIFを参照してください。
増減率での#DIV/0!
増減率は前の値で割ります。前の値が0だと、変化を表すパーセントはありません。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Product | 2025 | 2026 | Change | Change (labelled) |
| 2 | Desk | 200 | 240 | 20% | 20% |
| 3 | Chair | 150 | 120 | -20% | -20% |
| 4 | Lamp | 0 | 80 | #DIV/0! | new |
| 5 | Shelf | 90 | 90 | 0% | 0% |
#DIV/0! 0 または空のセルで割っています。机は20%増え、椅子は20%減りました。ランプは2025年に1つも売れなかったので、D4は#DIV/0!で、E4はnewと表示します。パーセントの列の中の文字列は文字列のままなので、SUMやAVERAGEでは飛ばされます。数式そのものは増減率のページで説明しています。
#DIV/0!になる平均を直す
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Rep | Sales | Rep | Average | ||
| 2 | Ana | 1200 | Dan | |||
| 3 | Ben | 900 | ||||
| 4 | Ana | 800 | ||||
| 5 | Cy | 600 | ||||
| 6 | Ben | 700 |
やってみよう: E2には売上のない担当者が入っているので、=AVERAGEIF(A2:A6,E2,B2:B6)は#DIV/0!を返します。F2に、E2の担当者の平均売上を返し、売上がなければ0を返す数式を書いてください。
チェックではE2をAnaにしても数式を試すので、平均を出さずに0を返す数式は失敗します。=IF(COUNTIF(A2:A6,E2)=0,0,AVERAGEIF(A2:A6,E2,B2:B6))でも合格します。
よくある質問
Excelの#DIV/0!はどういう意味ですか?
数式が数値を0で割ったか、Excelが0として扱う空のセルで割ったという意味です。C2が0か空白の間、=B2/C2は#DIV/0!を返します。AVERAGE、AVERAGEIF、MODも、結果的に0で割ることになるとこのエラーを返します。
#DIV/0!の代わりに0を表示するには?
先に割る数を判定します:=IF(C2=0,0,B2/C2)。0ではなく空のセルにするなら=IF(C2=0,"",B2/C2)を使います。=IFERROR(B2/C2,0)のほうが短いですが、数式の中のほかのエラーもすべて0に変えてしまいます。
合計が#DIV/0!になるのはなぜですか?
足しているセルのどれかに#DIV/0!が入っていて、SUMはエラーをそのまま渡すからです。そのセルの割り算を=IF(C2=0,"",B2/C2)で直すか、D2:D10をエラー値を飛ばして合計する=AGGREGATE(9,6,D2:D10)を使います。
空のセルでも#DIV/0!になりますか?
なります。空白のセルは計算では0として扱われるので、C2が空の間、=B2/C2は#DIV/0!を返します。空のセルは比較では0と等しくなるので、=IF(C2=0,"",B2/C2)は0と空白の両方を捉えます。