=SUMPRODUCT(($A$2:$A$20000="AA")*(($K$2:$K$20000="AA")+($K$2:$K$20000="BB"))*$M$2:$M$20000)
请注意:
- 由于您是对数组进行乘法/加法运算,因此无需包含双一元的
- 我不知道为什么您的示例公式中有
!。
- 要返回
TRUE;FALSE 的OR 数组,我们添加。
你的 cmets 仍然没有清楚地解释你正在做什么动态。
但要为K 列创建动态OR,包括测试A 列和求和列M,您可以执行以下操作:
对于 K 列,我们假设您可能的 OR 分别输入在 F2:F10 范围内
=SUMPRODUCT(MMULT(--($K$2:$K$20000=TRANSPOSE($F$2:$F$10)),--(ROW($F$2:$F$10)>0))*($A$2:$A$20000="AAA")*$M$2:$M$20000)
矩阵乘法将产生19,999 条目的单列,如果不匹配,则匹配OR 和0 中的任何一个时为1。
有关此应用程序中 MMULT 函数的信息,请参阅 How to do a row-wise sum in an array formula in Excel?
。
在上面的公式中,OR范围内的“空白”(F2:F10)也会匹配K列的空白条目。所以可以想象,如果K和F有空白,col有AAA A 和 M 列中可能返回错误结果的值。
为避免这种可能性,我们可以使用动态公式来调整 F 列的大小,我们将在其中输入 OR 值:
=INDEX($F$2:$F$10,1):INDEX($F$2:$F$10,COUNTA($F$2:$F$10))
将仅返回 col F 中非空白的值(假设列中没有空白)
所以:
=SUMPRODUCT(MMULT(--($K$2:$K$20000=TRANSPOSE(INDEX($F$2:$F$10,1):INDEX($F$2:$F$10,COUNTA($F$2:$F$10)))),--(ROW(INDEX($F$2:$F$10,1):INDEX($F$2:$F$10,COUNTA($F$2:$F$10)))>0))*($A$2:$A$20000="AAA")*$M$2:$M$20000)
鉴于此数据:
最后一个公式将返回值5(M2,M3,M7 的总和)