我有一个带有TRUE / FALSE值的样本数据集:
COLA | COLB | COLC
------ | ----- | -----
ABCD | 1234 | TRUE
BCDE | 2345 | FALSE
ABCD | 3456 | TRUE
我尝试的公式是=SUMIFS(COLB,COLC,"TRUE",COLA,"ABCD")
,它返回0
而不是4690
。
如果我改为使用布尔符号而不是文字=SUMIFS(COLB,COLC,TRUE,COLA,"ABCD")
,它仍会返回0
。
奇怪的是,如果我回到COLC中的单元格并双击+输入值,内容会居中,然后公式开始正常工作:
COLA | COLB | COLC
------ | ----- | -----
ABCD | 1234 | TRUE
BCDE | 2345 | FALSE
ABCD | 3456 | TRUE
但是,我不想这样做,因为数据是通过宏导入的,而且不应该触摸该表。
如何修复公式以捕获当前在COLC中的文本?
答案 0 :(得分:3)
SUMIFS
将条件参数中的TRUE
解释为Boolean。您的数据将作为文本字符串导入。
您可以通过添加通配符强制SUMIF以字符串形式查看TRUE:
=SUMIFS(COLB,COLA,"ABCD",COLC,"*TRUE")
显然,不理想,因为它会计算任何以TRUE结尾的字符串,但应该以你的例子为准。
另一种不依赖外卡的替代方案是:
=SUMPRODUCT((COLA="ABCD")*(COLC="TRUE")*COLB)
如果您需要能够计算TRUE,无论它是BOOLEAN还是TEXT,请尝试以下方法之一:
=SUM(SUMIFS(COLB,COLA,"ABCD",COLC,{"*TRUE",TRUE}))
=SUMPRODUCT((COLA="ABCD")*(COLC={"TRUE",TRUE})*COLB)