如何避免出现“#DIV / 0!” Google文档电子表格中出现错误?


76

我有一列average(K23:M23)是开始时与#DIV/0!K23通过M23细胞是空的。最好我只想对包含非零,非空白值的像元取平均值。我认为可以使用query命令:

https://docs.google.com/support/bin/answer.py?hl=zh_CN&answer=159999

但是他们的榜样对我没有帮助。


3
属于webapps.stackexchange.com。
贾斯汀·尼森纳

1
奇。0/3应该为0,而不是零除错误。
Marc B

Answers:


151

用来包装您的公式IFERROR

=IFERROR(yourformula)

6
这似乎是最简单的答案,尽管我希望Google可以添加一些功能来允许检查特定类型的错误。如果将函数包装在通用IFERROR中,则在发生其他错误时将很难调试。
Brionius

2
这打破了逻辑和编程中的一些非常基本的原则。如果知道要避免的错误/异常,则应该以这种方式显式处理它。从这个意义上说,百富勤的答案更好。但我会再发布一个答案。
Suamere '16

3
可能会帮助您知道您可以指定默认值:=IFERROR(K23/M23, "Invalid data")消息来源
rideron89 '19

39

您可以使用IF语句检查引用的单元格,并返回一个结果为零或空白,否则返回公式结果。

一个简单的例子:

=IF(B1=0;"";A1/B1)

如果除数B1为空或为零,则将返回一个空字符串;否则,返回0。否则,返回A1除以B1的结果。

以平均值为例,您可以检查数据集是否具有值:

=IF(SUM(K23:M23)=0;"";AVERAGE(K23:M23))

如果没有输入任何内容,或者只有零,则返回一个空字符串;如果存在一个或多个值,则得到平均值。


在LibreOffice Calc中,AVERAGE的公式非常适合我。
RevNoah

3

在IFERROR中包装现有公式将无法实现:

包含非零,非空白值的像元的平均值。

我建议尝试:

=if(ArrayFormula(isnumber(K23:M23)),AVERAGEIF(K23:M23,"<>0"),"")

很高兴遇到这个问题,谢谢!希望答案更高。
温尔(PärWinzell)

1

由于您还明确要求处理尚未填写的列,并且我想如果它们有一个单词而不是一个数字,也不想弄乱它们,您可以考虑一下:

=If(IsNumber(K23), If(K23 > 0, ........., 0), 0)

这只是说...如果K23是一个数字;如果该数字大于零;然后做某事.........否则,返回零。

在.........中,您可以将除法方程式放在此处,例如A1/K23,您可以放心K23是一个大于零的数字。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.