Excel – sumifsdynamic数组文字

=SUM(SUMIFS('Output'!$H$50:$H$69,'Output'!$C$50:$C$69,{"*PLoan","Deficit Loan"},'Output'!$G$50:$G$69,X97:AC97)) 

我有上面的数组公式。 X97:AC97是我有我的数组文字,并在这个数组文字中的值是在一些其他参数条件(假设值是a,b,c,d,e,如果条件满足)。 由于这些值是有条件的,因此可能会显示为“”“”“”e“”。 因此,在sumifs数组公式中,它将数组的字面值视为值{“a”,“”,“”,“”,“e”,“”},这会导致错误。 我该如何使数组是{“a”,“e”}?

编辑:我意识到经过很多努力,sumifs可能不是正确的方法,因为它需要alignment。 例如,我可能有{PLoan,Deficit Loan}符合(1,0)标准,而X97:AC97 =(0,1,0,0,0,0)。 我确实希望得到这个数字的总和,但是由于不匹配而不能总和。

我得到了下面的工作。 如果有人能想到一种方法来将通配符作为我的stringsearch的一部分,让我知道…

 =SUMPRODUCT(IFERROR(ISNUMBER(MATCH('Output'!$G$50:$G$69,$X$97:$AC$97,0)*MATCH('Output'!$C$50:$C$69,{"PLoan","Operating Deficit Loan"},0))*('Output'!$H$50:$H$69),0)) 


COUNTIF(S) / SUMIF(S)不一定需要对准传递的标准。 这一切都取决于你想要数的是什么。

如果您需要包含两组标准的所有组合的计数,那么包含这些标准的两个数组是正交的就足够了。

目前,你传递的两个标准数组是相同的向量types,即行向量,因为:

X97:AC97

显然是一个行(水平)向量,也是:

{"*PLoan","Deficit Loan"}

因为对于Excel的英文版本,逗号和分号分别表示行(水平)和列(垂直)数组常量内的分隔符。

因此,在你的情况下,你只需要转置这两个数组之一,即:

=SUM(SUMIFS(Output!$H$50:$H$69,Output!$C$50:$C$69,{"*PLoan";"Deficit Loan"},Output!$G$50:$G$69,X97:AC97))

(我们也可以转换另一个,即:

=SUM(SUMIFS(Output!$H$50:$H$69,Output!$C$50:$C$69,{"*PLoan","Deficit Loan"},Output!$G$50:$G$69,TRANSPOSE(X97:AC97)))

否则将X97:AC97的条目移动到某个其他垂直范围。)

在这里看到更多的信息。

问候