我有一个不起作用的公式。
=IF(OR(AC358="",ISERROR(AC358), AC358=0),VLOOKUP(M358,FCal,3,TRUE),VLOOKUP(AC358,FCal,3,TRUE)
列AC中有一个vlookup,它将返回实际值0或错误#N / A.
当AC(vlookup)返回#N / A错误时,IF语句以其当前格式失败。
但是,当我
时,IF语句会起作用硬编码实际值或零代入AC,或
如果我只用一个标准替换OR标准ISERROR(AC358)
所以我知道ISERROR
本身是有效的,但它在OR语句中没有工作。
答案 0 :(得分:1)
使用ISERROR或ISNA检查错误必须与其他计算分开进行;您无法在OR中使用更常规的标准嵌套错误检查。包含对包含#N / A的单元格的检查的OR将返回#N / A,而不是TRUE或FALSE。当ACD358包含#N / A错误时,=IF(ACD358=0, TRUE, FALSE)
不返回FALSE;它返回#N / A.
=IF(ISNA(AC358), VLOOKUP(M358, FCal, 3), IF(OR(AC358="", AC358=0), VLOOKUP(M358, FCal, 3), VLOOKUP(AC358, FCal, 3)))
当错误检查返回TRUE时,处理立即转到第一个M358 VLOOKUP function;其他IF和OR不计算。
鉴于空白,零或#N / A可能会从FCal返回另一个#N / A,或许这个带有IFERROR的较短版本会更好。
=IFERROR(VLOOKUP(AC358, FCal, 3), VLOOKUP(M358, FCal, 3))
TRUE是VLOOKUP的 range_lookup 参数的默认值。为了清晰起见,除了包含它之外,没有必要。