SUMPRODUCT返回值不一致
这到底是怎么回事? 这是一个错误?
在下面的例子中,这个公式是为了计算不是由塑料制成的苹果的数量。
=SUMPRODUCT(--(B4=IF(NOT($C$4:$C$11),$B$4:$B$11)))
它应该返回1.为什么它返回2?
当我使用F9手动评估SUMPRODUCT
的数组时,我可以看到在那里只有一个; 当我然后按回车 ,它返回1,这是我从一开始就预期的。
最好的部分:如果我将完全相同的原始公式复制到其他单元格(不拖动 – 它具有完全相同的单元格引用),则返回0或#VALUE!
错误。 为什么结果会改变呢?
testing您的复制粘贴乐趣的数据:
Fruit Made of plastic apple FALSE banana FALSE plum FALSE pear TRUE apple TRUE banana FALSE plum TRUE pear TRUE
实际上一切都没问题。 你只需要按Ctrl + Shift + Enter来计算公式。 当你按下input时,它不考虑公式是基于数组的。
但是当你使用F9
评估公式时,它知道这个数组是一个数组,所以这就是为什么你在计算公式中看到大括号的原因,然后当你只按回车时 ,由于数组部分已经被计算为一个数组使用F9
,然后重新调整1 。
但是如果你从头开始按回车 ,没有任何评价,那么它将返回两个! 这就是为什么。
将公式复制到另一个单元格时也是如此。 还有,你需要按ctrl + shift + enter来计算数组公式。
我有一个理论 – 只不过是(但不会在评论中) – 其根本原因是IF的短路性质。
拿第一个apple
– 它与FALSE相关,所以计数1。列表中是否有另一个FALSE? 是的,列表中还有另一个apple
吗? 也是,所以加1,结果2
。
拿第一banana
– 如上,结果2
。
拿第一个plum
– 如上,结果2。
拿第一个pear
– 它与TRUE相关,所以计数0 – 并停止计数。
拿第二个apple
– 它与TRUE相关,所以计数0 – 并停止计数。
拿第二banana
– 它与FALSE相关,所以计数1.列表中是否有另一个错误? 是的,列表中还有另外一个banana
吗? 也是,所以加1,结果2
。
拿第二个plum
– 它与TRUE相关,所以计数0 – 并停止计数。
拿第二个pear
– 它与TRUE相关,所以计数0 – 并停止计数。
但是这加上隐含的拦截 – 它只在第4行时适用于B4。
这是一个错误?
我认为可以安全地说,不是一个错误。
为什么它返回2?
也许以上是解释(我没有testing过!)
这到底是怎么回事?
如果没有微软的代码,可能不需要详细的答复?
尝试使用COUNTIFS
函数,因为您正在尝试基于多个条件进行计数:
=COUNTIFS(B:B, B4, C:C, False)
这工作:
=SUMPRODUCT(($B$4:$B$11=B4)*NOT($C$4:$C$11))
它不需要作为数组公式input。