Excel不捕获条件为Text / Boolean的SUMIFS

时间:2017-03-31 13:07:38

标签: excel vba excel-vba

我有一个带有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中的文本?

1 个答案:

答案 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)