Excel公式避免#VALUE!错误的解决方案咨询
Excel公式避免#VALUE!错误的解决方案咨询
嗨,Franco!我完全懂你的困扰——你的公式在P30到P34这些单元格还没填内容时,总会跳出#VALUE!错误,其实问题出在你用加号直接加文本值上:你写的IF函数返回的是带引号的"10"(文本型数字)和""(空文本),Excel没办法把空文本和其他值做加法运算,自然就报错啦。
给你几个简单好用的解决办法,按需选就行:
修改IF返回值为数字(最直接)
把IF里的文本"10"改成纯数字10,空值返回0而不是空文本,这样加法运算就完全合法了:=IF(P30<>"",10,0)+IF(P31<>"",10,0)+IF(P32<>"",10,0)+IF(P33<>"",10,0)+IF(P34<>"",10,0)要是想在所有单元格都为空时显示空而不是0,再套一层IF就行:
=IF(SUM(IF(P30<>"",10,0),IF(P31<>"",10,0),IF(P32<>"",10,0),IF(P33<>"",10,0),IF(P34<>"",10,0))=0,"",SUM(IF(P30<>"",10,0),IF(P31<>"",10,0),IF(P32<>"",10,0),IF(P33<>"",10,0),IF(P34<>"",10,0)))用SUMPRODUCT简化公式(最简洁)
这个写法能大幅缩短公式,还从根源上避免错误:=SUMPRODUCT(--(P30:P34<>""))*10原理很简单:
--(P30:P34<>"")会把每个非空单元格转换成1,空单元格转换成0,SUMPRODUCT求和后乘以10,就是你要的总分。如果想在全空时显示空,同样套一层IF:=IF(SUMPRODUCT(--(P30:P34<>""))*10=0,"",SUMPRODUCT(--(P30:P34<>""))*10)用SUM包裹原公式(兼容原有写法)
如果你不想改动原有的IF返回逻辑,用SUM函数把整个公式包起来就行——SUM会自动忽略空文本,把文本型数字转换成真实数字计算:=SUM(IF(P30<>"","10",""),IF(P31<>"","10",""),IF(P32<>"","10",""),IF(P33<>"","10",""),IF(P34<>"","10",""))不过这种写法不太推荐,因为如果单元格里不小心输入了非数字文本,可能还是会出问题,只适合你当前的简单场景。
备注:内容来源于stack exchange,提问作者Franco




