Excel有条件的SUMPRODUCT

时间:2012-08-13 22:12:53

标签: excel

请考虑以下事项:

    A    B    C
----------------
1   a    c    1
2   b    f    2
3   a    c    3
...
6   a    c    4

此处的目标是使用条件SUMPRODUCT,以便当第6行中的值与其各自列中的值匹配时,将计算SUMPRODUCT。这是有趣的事情。

使用时:

=SUMPRODUCT((A3:A5=A1),(B3:B5=B1),C3:C5)

输入参数计算为:

=SUMPRODUCT({TRUE, FALSE, TRUE},{TRUE, FALSE, TRUE},{1, 2, 3})

但结果是0。

现在,在使用数学运算符对公式进行评估之前,将布尔值TRUE和FALSE转换为1和0对应项时,会填充正确的结果:

=SUMPRODUCT(--(A3:A5=A1),--(B3:B5=B1),C3:C5)

=SUMPRODUCT(ABS(A3:A5=A1),ABS(B3:B5=B1),C3:C5)

=SUMPRODUCT((A3:A5=A1)^2,(B3:B5=B1)^2,C3:C5)

等......,

一旦应用了数学运算符,最终会计算为1和0,

=SUMPRODUCT({1, 0, 1},{1, 0, 1},{1, 2, 3})

我们得到了合适的价值。

我们一直在思索Excel,似乎无法正确评估它自己的输入。我们认为有一行代码缺少SUMPRODUCT编译代码,它将TRUE和FALSE转换为1和0,错误捕获只返回0。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我环顾四周,即使在查尔斯威廉姆斯的网站上也没有找到答案,为什么它以这种方式运作。我认为这是一个编程选择,在其原始的“原生”(所有逗号)形式中,Sumproduct仅对数字进行操作,并将任何非数字单元格视为零。

这样,A1中引用B1:C3的Sumproduct公式将B1中的TRUE视为与“strimp099”相同 - 为零。我认为这是有意义的,因为Sumproduct的原始,相当行人,意图,并给出了普通用户可能期望的结果。

enter image description here

答案 1 :(得分:2)

大多数函数不会将逻辑值强制转换为数组参数中的数字,而恕我直言,最好是在一致性方面犯错,而不是为少数函数引入新行为。强制还具有相关的性能开销,因此只应在需要时实施。

那里说了一些额外的功能,比如AVERAGEAVARA等,它们将逻辑值视为数字(和文本值为零),所以我想也可以添加SUMPRODUCTA函数但这也可能增加混乱和应用膨胀。我相信这些的目的是为了与Lotus 123的兼容性。 Excel选项中还有 Transition Formula Evaluation 的设置。高级,激活时将TRUE / FALSE视为SUM等计算中的数字,但许多函数似乎没有按预期响应。