2012-08-13 117 views
2

考虑以下几点:Excel条件SUMPRODUCT

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

现在铸造布尔TRUEs和FALSEs当其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思考问题,似乎无法正确评估它自己的输入。我们认为有一行代码遗漏了将TRUE和FALSE转换为1和0的SUMPRODUCT编译代码,并且错误捕获仅返回0.

有什么想法?

+0

如果您可以提供更多关于您正在做什么的细节,或许可以使用示例电子表格,我可以为您提供帮助。我们几乎在所有工作簿中都使用sumproduct()。 – ApplePie 2012-08-13 22:19:09

+0

对你有用的各种东西都是通过对它们执行操作来强制Trues和False为1和0。你也可以做'= SUMPRODUCT((A3:A5 = A1)*(B3:B5 = B1),C3:C5)',它会起作用。 – 2012-08-13 22:57:54

+0

同意强制为1和0.我想了解为什么我必须首先强制为1和0。 – 2012-08-13 23:46:16

回答

2

大多数功能不强制为数字逻辑值在数组参数,和IMHO它是优选的一致性的侧犯错,而不是几个功能引入新的行为。强制也有相关的性能开销,所以应该只在需要时执行。

这就是说像AVERAGEAVARA,加等一些额外的功能,即做处理逻辑值作为数字(和文本值为零),所以我想可能已添加一个SUMPRODUCTA功能太多,但可能也增加混乱,应用程序膨胀。我相信这些的目的是为了与Lotus 123兼容。还有一个设置转换公式评估Excel选项|先进的,它激活时会将TRUE/FALSE视为计算中的数字,如SUM,但许多函数似乎没有如预期的那样对此作出响应。

+0

良好的信息,+1。 – 2012-08-14 14:47:28

+0

我们接受了一个采访,问我们如何做一个有条件的产品。他使用了 - 这让我们感到好奇,并导致了1.5小时的调查。这项调查导致了我们的问题。 – 2012-08-15 14:04:54

2

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

通过这种方式,A1中引用B1:C3的Sumproduct公式将B1中的TRUE与“strimp099”中的TRUE对待为零。考虑到Sumproduct的原始,相当行人,意图以及平均用户可能期望的结果,我认为这是有道理的。

enter image description here