多阵列条件下的产品

时间:2018-02-01 16:36:35

标签: arrays excel

在我的另一篇文章中,我了解到只要在垂直数组中使用水平条件,我就可以使用数组条件。例如,这将起作用:

X1=SUMPRODUCT((A1:A100=C1:D1)*(B1:B100))

现在我看到我可以添加更多条件,但我无法弄清楚如何添加额外的数组条件。例如,这也可以:

X2 =SUMPRODUCT((E1:E100=C2)*(A1:A100=C1:D1)*(B1:B100))

但是这给了我错误的结果(它比预期的要少):

X3 =SUMPRODUCT((E1:E100=C2:D2)*(A1:A100=C1:D1)*(B1:B100)) 

任何其他数组都会给我错误消息:

X4 =SUMPRODUCT((E1:E100=C2:E2)*(A1:A100=C1:D1)*(B1:B100)) =ERROR

因为我在X3上得到的比预期的少,我猜我的计算在"(E1:E100 = C2:D2)"之间存在一些布尔条件。和"(A1:A100 = C1:D1)"。但是,我没有看到它。特别是我认为在X4的情况下,我的条件数组长度的最大公约数是1,我不认为会出现这样的布尔问题。你能救我一下吗?

许多问候, 彼得

2 个答案:

答案 0 :(得分:1)

使用SUMIFS(),其中一个数组需要是水平的而另一个是垂直的,所以使用转置。

=SUMPRODUCT(SUMIFS(B1:B100,E1:E100,C2:D2,A1:A100,TRANSPOSE(C1:D1)))

答案 1 :(得分:1)

这里的一种可能性是使用MATCH来比较范围/数组,例如

=SUMPRODUCT(ISNUMBER(MATCH(E1:E100,C2:D2,0))*ISNUMBER(MATCH(A1:A100,C1:D1,0)),B1:B100)

这更灵活,因为它允许任意数量的数组条件....并且它们中的每一个都可以是任何长度的列或行(但只有单个列或行),因此我们可以更改{{1 }} C1:D1没有任何问题