公式除以零或除以空单元格时(空单元格算作 0),就会出现 #DIV/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! 公式除以了零或空单元格。D3 和 D4 显示 #DIV/0!:Ben 的电话数是 0,Cy 的单元格是空的。E 列中 Ana 和 Dee 都显示 30,另外两人什么都不显示。在 C4 中输入一个数字,两列都会算出结果。
这个错误往往是对的:除以零本来就没有答案,在这里它表示数据还没填进来。显示空白或 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 版本则显示 0,好像 Dee 什么都没卖出。如果你预计唯一的问题就是除数为零,用 IF(C2=0,...);如果任何错误都应该得到同一个备用值,用 IFERROR。IFERROR 一文对这个选择有更多说明。
检查也可以写成 =IF(C2,B2/C2,0):非 0 的数字都算作 TRUE。这样更短,但更难读懂。
AVERAGE 和 AVERAGEIF 中的 #DIV/0!
AVERAGE 是用总和除以个数。没有数字可数时,就成了除以零。
| 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! 公式除以了零或空单元格。Dan 没有任何销售记录,所以 F2 中的 AVERAGEIF 没有可以求平均的值。F3 对空的 C 列求平均,结果相同。把 E2 改成 Ana,F2 会显示 1000,即 1200 和 800 的平均值。在 Excel 中处理这种空的情况有两种方法:
=IFERROR(AVERAGEIF(A2:A6,E2,B2:B6),0)
=IF(COUNTIF(A2:A6,E2)=0,"no sales",AVERAGEIF(A2:A6,E2,B2:B6))
第二种会说明结果为什么缺失。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! 公式除以了零或空单元格。书桌增长了 20%,椅子下降了 20%。台灯在 2025 年一件都没卖出,所以 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! 是什么意思?
公式用一个数除以了零,或者除以了空单元格,而 Excel 把空单元格当作零。只要 C2 是 0 或空白,=B2/C2 就返回 #DIV/0!。AVERAGE、AVERAGEIF 和 MOD 最终除以零时也会返回它。
怎样让 Excel 显示 0 而不是 #DIV/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) 修正那个单元格的除法,或者用 =AGGREGATE(9,6,D2:D10) 绕开错误求和,它会对 D2:D10 求和并跳过错误值。
空单元格会导致 Excel 出现 #DIV/0! 吗?
会。空单元格在计算中算作 0,所以 C2 为空时 =B2/C2 返回 #DIV/0!。=IF(C2=0,"",B2/C2) 能同时处理 0 和空白,因为在比较中空单元格等于 0。