这到底是怎么回事?这是一个错误吗?
在下面的示例中,此公式旨在计算不是由塑料制成的苹果数量。
=SUMPRODUCT(--(B4=IF(NOT($C$4:$C$11),$B$4:$B$11)))
它应该返回1.为什么它会返回2?
当我使用 F9 手动评估SUMPRODUCT
内的数组时,我可以看到那里只有一个1;当我按 Enter 时,它返回1,这是我从一开始就预期的。
最好的部分:如果我将完全相同的原始公式复制到其他单元格(未拖动 - 它具有完全相同的单元格引用),则它返回0或#VALUE!
错误。为什么结果会改变?
为您的复制粘贴乐趣测试数据:
Fruit Made of plastic
apple FALSE
banana FALSE
plum FALSE
pear TRUE
apple TRUE
banana FALSE
plum TRUE
pear TRUE
答案 0 :(得分:1)
请尝试使用COUNTIFS
功能,因为您尝试根据多个条件进行计数:
=COUNTIFS(B:B, B4, C:C, False)
答案 1 :(得分:1)
实际上你的公式中的一切都没问题。您只需要按 ctrl + shift + 输入 来计算公式。
当您按 输入 仅时,它不会考虑公式是基于数组的。
当您使用 F9
评估公式时
,它知道数组是一个数组,这就是为什么你看到评估公式中的花括号,然后当你按 输入 时,因为数组部分已使用 F9
计算为数组,然后重新 1 。
但是如果你从头开始按输入,没有任何评价,那么它将返回两个!这就是为什么。
将公式复制到另一个单元格时的情况相同。还有,你需要按 ctrl + shift + 输入 来计算数组公式。
答案 2 :(得分:1)
我有一个理论 - 它只不过是(但不符合评论) - 其根本原因是IF的短路性质。
取第一个apple
- 它与FALSE相关联,因此计数1.列表中是否还有另一个FALSE?是的,列表中还有另一个apple
吗?也是,所以加1,结果2
采取第一个banana
- 如上所述,结果2
取第一个plum
- 如上所述,结果2.
取第一个pear
- 它与TRUE相关联,因此计数0 - 并停止计数
取第二个apple
- 它与TRUE相关联,因此计数0 - 并停止计数
取第二个banana
- 它与FALSE相关联,因此计数1.列表中是否还有另一个FALSE?是的,列表中还有另一个banana
吗?也是,所以加1,结果2
取第二个plum
- 它与TRUE相关联,因此计数0 - 并停止计数
取第二个pear
- 它与TRUE相关联,因此计数0 - 并停止计数。
但是这与暗示拦截相结合 - 它只适用于在Row4中的B4。
这是一个错误吗?
我认为可以说,不是一个错误。
为什么回归2?
也许以上是解释(我没有测试过!)
这到底是怎么回事?
如果不访问Microsoft的代码,可能无法详细回答?
答案 3 :(得分:0)
这有效:
=SUMPRODUCT(($B$4:$B$11=B4)*NOT($C$4:$C$11))
不需要输入数组公式。