阻止Excel评估OR()中不需要的表达式

时间:2010-04-29 17:32:09

标签: excel formula

IF(OR(ISNA(MATCH(8,B10:B17,0)),MATCH(8,B10:B17,0)>8),"",...BLAH...)

我了解如何通过重新安排我的公式来解决这个问题。我知道如何表明这一点。您可以看到OR()语句检查以查看第一个MATCH()是否返回NA。当它这样做时,OR()应该自动返回TRUE并且不评估第二个MATCH(),因为OR()的条件已经满足,无论其他参数是什么,它都返回true。您会注意到第一个和第二个MATCH()函数执行相同的操作。发生的事情是整个函数返回NA因为第二个MATCH()正在执行,即使它没有,OR()已经满足一个TRUE,因此函数应该返回“”。

这是一个错误还是故意的?

2 个答案:

答案 0 :(得分:4)

在Excel公式中OR不进行短路评估(AND也没有),但是IF。 我猜它是故意的,因为它一直都是这样。

答案 1 :(得分:0)

为了扩展查尔斯所说的内容,OR和AND不会因为它们的原因而短路。公式评估所有输入以得出结果。话虽这么说,你可能会写一个UDF来做你想要的。