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。