IF声明与OR标准和ISERROR
我有一个不工作的公式。
=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,或
-
如果我只用一个标准
ISERROR(AC358)
replaceOR标准,
所以我知道ISERROR
是独立工作的,但它不在OR语句中工作。
使用ISERROR或ISNA检查错误必须与其他计算分开进行; 您不能在OR中嵌套更常规的错误检查。 对包含#N / A的单元格进行检查的OR将返回#N / A,而不是TRUE或FALSE。 =IF(ACD358=0, 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函数 ; 另一个IF和OR不计算。
考虑到一个空白,零或#N / A可能会从FCal返回#N / A,也许这个更短的版本与IFERROR会更好。
=IFERROR(VLOOKUP(AC358, FCal, 3), VLOOKUP(M358, FCal, 3))
TRUE是VLOOKUP的range_lookup参数的默认值。 除了清楚之外,没有必要。