Menu

Excelの#DIV/0!エラー: 0で割るエラーの直し方

#DIV/0!は、C2が空のときの=B2/C2のように、数式が0や空のセルで割ると表示されます。=IF(C2=0,"",B2/C2)なら代わりに空のセルを表示します。数値のない範囲のAVERAGEもこのエラーを返します。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

#DIV/0!は、数式が0か空のセルで割ると表示されます(空のセルは0として扱われます)。C2が0か空白の間、=B2/C2は#DIV/0!を返します。=IF(C2=0,"",B2/C2)は先に割る数を確かめ、代わりにセルを空のままにします。

電話1件あたりの売上
D3
ABCDE
1RepSalesCallsPer callPer call (checked)
2Ana1200403030
3Ben9000#DIV/0!
4Cy600#DIV/0!
5Dee750253030
#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!を直す

どちらの数式もエラーを取り除きます。違うのは、ほかに何を隠すかです。

割る数の判定と、すべてのエラーの捕捉
E5
ABCDE
1RepSalesCallsIF(C=0)IFERROR
2Ana1200403030
3Ben900000
4Cy60000
5Deen/a25#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で割ることになります。

1人の担当者の平均
F2
ABCDEF
1RepSalesRepAverage
2Ana1200Dan#DIV/0!
3Ben900#DIV/0!
4Ana800
5Cy600
6Ben700
#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だと、変化を表すパーセントはありません。

前年からの変化
D4
ABCDE
1Product20252026ChangeChange (labelled)
2Desk20024020%20%
3Chair150120-20%-20%
4Lamp080#DIV/0!new
5Shelf90900%0%
#DIV/0! 0 または空のセルで割っています。

机は20%増え、椅子は20%減りました。ランプは2025年に1つも売れなかったので、D4は#DIV/0!で、E4はnewと表示します。パーセントの列の中の文字列は文字列のままなので、SUMやAVERAGEでは飛ばされます。数式そのものは増減率のページで説明しています。

#DIV/0!になる平均を直す

一致する行のない平均
F2
ABCDEF
1RepSalesRepAverage
2Ana1200Dan
3Ben900
4Ana800
5Cy600
6Ben700
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: 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と空白の両方を捉えます。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める