Excel SUMPRODUCT 和动态文本条件
Excel SUMPRODUCT and dynamic text conditions
我正在尝试对具有特定动态条件的行进行求和。我有这样的行:
A只能是一个值,K可以有多个或值。最后要求和M。
我尝试使用适用于 A 列但不适用于 K 列的 SUMPRODUCT()。我正在寻找的是:
=SUMPRODUCT(--(!$A:$A000="AA")*--(!$K:$K000="AA" OR "BB")*$M:$M000)
我知道我可以执行 ="AA" 和 ="BB",但我需要“AA”和“BB”基于其他单元格是动态的。而且参数的数量是不同的。我试过 {"AA";"BB"} 但我知道这不会起作用,因为匹配需要在同一行。
完全可以实现吗?
非常感谢!
将 SUMIFS 与 SUMPRODUCT 包装器一起使用:
=SUMPRODUCT(SUMIFS($M:$M000,$A:$A000,"AA",$K:$K000,{"AA","BB"}))
=SUMPRODUCT(($A:$A000="AA")*(($K:$K000="AA")+($K:$K000="BB"))*$M:$M000)
注意:
- 因为你是 multiplying/adding 数组,所以没有必要包含双一元的
- 我不知道为什么你的示例公式中有一个
!
。
- 我们向return
TRUE;FALSE
的OR
数组添加。
您的评论仍然没有清楚地解释您正在动态化的内容。
但是要为列 K
创建动态 OR
,包括测试列 A
和汇总列 M
,您可以执行以下操作:
对于 K 列,我们假设您可能的 OR
分别输入范围 F2:F10
=SUMPRODUCT(MMULT(--($K:$K000=TRANSPOSE($F:$F)),--(ROW($F:$F)>0))*($A:$A000="AAA")*$M:$M000)
矩阵乘法将产生一列 19,999
个条目,如果 OR
中的任何一个匹配,则为 1,如果不匹配,则为 0
。
参见如何在Excel中的数组公式中进行逐行求和?
有关此应用程序中 MMULT
功能的信息。
在上面的公式中,OR
范围(F2:F10
)中的“空白”也将匹配K列中的空白条目。因此可以想象,如果K中有一个空白并且F 和 A 列中的 AAA 以及 M 列中的值表明错误结果可能 returned.
为避免这种可能性,我们可以使用动态公式来调整我们输入 OR
值的列 F 的大小:
=INDEX($F:$F,1):INDEX($F:$F,COUNTA($F:$F))
将 return 仅 F 列中非空白的值(假设该列中没有空白)
所以:
=SUMPRODUCT(MMULT(--($K:$K000=TRANSPOSE(INDEX($F:$F,1):INDEX($F:$F,COUNTA($F:$F)))),--(ROW(INDEX($F:$F,1):INDEX($F:$F,COUNTA($F:$F)))>0))*($A:$A000="AAA")*$M:$M000)
鉴于此数据:
最后一个公式将 return 的值为 5
(M2,M3,M7
的总和)
我正在尝试对具有特定动态条件的行进行求和。我有这样的行:
A只能是一个值,K可以有多个或值。最后要求和M。
我尝试使用适用于 A 列但不适用于 K 列的 SUMPRODUCT()。我正在寻找的是:
=SUMPRODUCT(--(!$A:$A000="AA")*--(!$K:$K000="AA" OR "BB")*$M:$M000)
我知道我可以执行 ="AA" 和 ="BB",但我需要“AA”和“BB”基于其他单元格是动态的。而且参数的数量是不同的。我试过 {"AA";"BB"} 但我知道这不会起作用,因为匹配需要在同一行。
完全可以实现吗?
非常感谢!
将 SUMIFS 与 SUMPRODUCT 包装器一起使用:
=SUMPRODUCT(SUMIFS($M:$M000,$A:$A000,"AA",$K:$K000,{"AA","BB"}))
=SUMPRODUCT(($A:$A000="AA")*(($K:$K000="AA")+($K:$K000="BB"))*$M:$M000)
注意:
- 因为你是 multiplying/adding 数组,所以没有必要包含双一元的
- 我不知道为什么你的示例公式中有一个
!
。 - 我们向return
TRUE;FALSE
的OR
数组添加。
您的评论仍然没有清楚地解释您正在动态化的内容。
但是要为列 K
创建动态 OR
,包括测试列 A
和汇总列 M
,您可以执行以下操作:
对于 K 列,我们假设您可能的 OR
分别输入范围 F2:F10
=SUMPRODUCT(MMULT(--($K:$K000=TRANSPOSE($F:$F)),--(ROW($F:$F)>0))*($A:$A000="AAA")*$M:$M000)
矩阵乘法将产生一列 19,999
个条目,如果 OR
中的任何一个匹配,则为 1,如果不匹配,则为 0
。
参见如何在Excel中的数组公式中进行逐行求和?
有关此应用程序中 MMULT
功能的信息。
在上面的公式中,OR
范围(F2:F10
)中的“空白”也将匹配K列中的空白条目。因此可以想象,如果K中有一个空白并且F 和 A 列中的 AAA 以及 M 列中的值表明错误结果可能 returned.
为避免这种可能性,我们可以使用动态公式来调整我们输入 OR
值的列 F 的大小:
=INDEX($F:$F,1):INDEX($F:$F,COUNTA($F:$F))
将 return 仅 F 列中非空白的值(假设该列中没有空白)
所以:
=SUMPRODUCT(MMULT(--($K:$K000=TRANSPOSE(INDEX($F:$F,1):INDEX($F:$F,COUNTA($F:$F)))),--(ROW(INDEX($F:$F,1):INDEX($F:$F,COUNTA($F:$F)))>0))*($A:$A000="AAA")*$M:$M000)
鉴于此数据:
最后一个公式将 return 的值为 5
(M2,M3,M7
的总和)