2016-06-08 106 views
2

我有一個公式不起作用。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語句的工作時,我要麼

  1. 硬編碼實際值或零到AC,或

  2. ,如果我只是一個單一的標準更換或標準ISERROR(AC358)

所以我知道ISERROR是獨立工作,但它不是在OR語句中工作。

+0

FCat命名範圍中的值是否以升序方式排序? – Jeeped

+0

是的,嵌套的查找到FCal工作正常。它是OR語句中的ISERROR,似乎是問題 – Anthony

+0

作爲更新,我已經通過將AC中的vlookup嵌套到If(ISERROR(vlookup ...),0,vlookup(...)中來解決問題。 ))。這樣,AC會返回一個成功的值或0,然後我的後續IF OR就會反對它。不回答原因,但至少讓我得到結果。 – Anthony

回答

1

檢查ISERROR或ISNA的錯誤必須與其他計算分開進行;您不能在OR中嵌套更常規的錯誤檢查。對包含#N/A的單元格進行檢查的OR將返回#N/A,而不是TRUE或FALSE。 =IF(ACD358=0, TRUE, FALSE)當ACD358包含#N/A錯誤時不返回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參數的默認值。除了爲了清楚而包括它,沒有必要。

+0

謝謝Jeeped!一個優雅的替代我所做的。 – Anthony