Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel未捕获条件为文本/布尔值的SUMIF_Vba_Excel - Fatal编程技术网

Vba Excel未捕获条件为文本/布尔值的SUMIF

Vba Excel未捕获条件为文本/布尔值的SUMIF,vba,excel,Vba,Excel,我有一个带有真/假值的样本数据集: 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

我有一个带有真/假值的样本数据集:

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中的文本?

SUMIFS
将criteria参数中的
TRUE
解释为布尔值。您的数据正在作为文本字符串导入

通过添加通配符,可以强制SUMIFs将TRUE视为字符串:

=SUMIFS(COLB,COLA,"ABCD",COLC,"*TRUE")
显然,这并不理想,因为它将计算任何以TRUE结尾的字符串,但根据您的示例应该可以工作

不依赖通配符的另一种选择是:

=SUMPRODUCT((COLA="ABCD")*(COLC="TRUE")*COLB)
如果您需要能够计算TRUE,无论它可能是布尔值还是文本,请尝试以下方法之一:

=SUM(SUMIFS(COLB,COLA,"ABCD",COLC,{"*TRUE",TRUE}))
=SUMPRODUCT((COLA="ABCD")*(COLC={"TRUE",TRUE})*COLB)

SUMIFS
正在将criteria参数中的
TRUE
解释为布尔值。您的数据正在作为文本字符串导入

通过添加通配符,可以强制SUMIFs将TRUE视为字符串:

=SUMIFS(COLB,COLA,"ABCD",COLC,"*TRUE")
显然,这并不理想,因为它将计算任何以TRUE结尾的字符串,但根据您的示例应该可以工作

不依赖通配符的另一种选择是:

=SUMPRODUCT((COLA="ABCD")*(COLC="TRUE")*COLB)
如果您需要能够计算TRUE,无论它可能是布尔值还是文本,请尝试以下方法之一:

=SUM(SUMIFS(COLB,COLA,"ABCD",COLC,{"*TRUE",TRUE}))
=SUMPRODUCT((COLA="ABCD")*(COLC={"TRUE",TRUE})*COLB)

尝试使用this=SUMIFS(COLB,COLC,TRUE())@nicolasse No joy:(问题在于数据而不是公式。一些被视为文本,另一些被视为布尔值。当数据进入时,您需要修复数据。您可以使用
=ISLOGICAL(C2)
验证数据是否被格式化为布尔值(在这种情况下,此公式返回TRUE)。请告诉我们您的结果。这是一个不同的问题,请提出一个新问题,并举例说明您的原始数据和用于引入值的代码。我将删除此问题,因为出错的不是公式,而是数据。尝试使用此=SUMIFS(COLB,COLC,TRUE())@Nicolases No joy:(问题出在数据上,而不是公式上。一些被视为文本,另一些被视为布尔值。当数据进入时,您需要修复数据。您可以使用
=ISLOGICAL(C2)
验证数据是否格式化为布尔值(在这种情况下,此公式返回true)。请让我们知道您的结果。这是一个不同的问题,请提出一个新的问题,包括您的原始数据示例和用于引入值的代码。我将删除此问题,因为错误的不是公式,而是数据。