Excel条件SUMPRODUCT
考虑以下:
ABC ---------------- 1 ac 1 2 bf 2 3 ac 3 ... 6 ac 4
这里的目标是使用条件SUMPRODUCT,以便在第6行中的值与其各自列中的值匹配时,计算SUMPRODUCT。 这是有趣的事情。
使用时:
=SUMPRODUCT((A3:A5=A1),(B3:B5=B1),C3:C5)
input参数的计算公式如下:
=SUMPRODUCT({TRUE, FALSE, TRUE},{TRUE, FALSE, TRUE},{1, 2, 3})
但结果是0。
现在,在使用math运算符评估公式之前,将布尔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)
等等…,
一旦math运算符被应用,最终评估为1和0,
=SUMPRODUCT({1, 0, 1},{1, 0, 1},{1, 2, 3})
我们得到适当的价值。
我们一直在思考Excel的问题似乎无法正确评估自己的投入。 我们认为有一行代码缺less将TRUE和FALSE转换为1和0的SUMPRODUCT编译代码,错误捕获只是返回0。
有什么想法吗?
大多数函数并不强制数组参数中的数字,恕我直言,最好是在一致性方面犯错,而不是为一些函数引入新的行为。 强制也有相关的性能开销,所以应该只在需要的时候执行。
也就是说,像AVERAGEA
, VARA
等额外的function被添加,将逻辑值视为数字(和文本值为零),所以我想一个SUMPRODUCTA函数可能已经被添加,但也可能会添加混淆和应用程序膨胀。 我相信这些的目的是为了与Lotus 123兼容。还有一个在Excel Options | 高级 ,当被激活时,会将TRUE / FALSE视为SUM
计算中的数字,但许多函数似乎没有按照预期做出响应。
我环顾四周,甚至在查尔斯·威廉姆斯的网站上也没有find答案,为什么它这样工作。 我认为这是一个编程select,在它的原始“本地”(所有逗号)formsSumproduct只对数字进行操作,并将任何非数字单元格视为零。
通过这种方式,A1中引用B1:C3的Sumproduct公式将B1中的TRUE与“strimp099”一样视为零。 考虑到Sumproduct的原始,相当行人,意图以及平均用户可能期望的结果,我认为这是有道理的。