1
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,因此该函数应该返回“”。

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

4

2 回答 2

4

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

于 2010-04-29T18:37:32.003 回答
0

为了扩展查尔斯所说的内容,OR 和 AND 不能因为它们的本质而短路。该公式评估所有输入以得出结果。话虽如此,您可能会编写一个 UDF 来满足您的要求。

于 2010-04-29T18:51:29.843 回答