2016-06-08 3 views
2

나는 작동하지 않는 수식이 있습니다.OR 조건 및 ISERROR가있는 IF 문

=IF(OR(AC358="",ISERROR(AC358), AC358=0),VLOOKUP(M358,FCal,3,TRUE),VLOOKUP(AC358,FCal,3,TRUE) 

열 AC에는 실제 값 0 또는 오류 N/A를 반환하는 vlookup이 있습니다.

AC (vlookup)가 # N/A 오류를 반환하면 IF 문은 현재 형식으로 실패합니다.

그러나, IF 문은 작동 할 때 나는 하나

    실제 값 또는 AC에 제로, 또는

  1. 난 그냥 하나의 기준으로 또는 기준을 대체 할 경우

  2. 하드 코드 ISERROR(AC358)

그래서 ISERROR은 자체적으로 작동하지만 OR 문 내부에서 작동하지 않습니다.

+0

FCat 명명 된 범위의 값이 오름차순으로 정렬되어 있습니까? – Jeeped

+0

예, FCal에 중첩 된 vlookup이 정상적으로 작동합니다. 문제가있는 OR 문 안의 ISERROR입니다. – Anthony

+0

업데이트로, AC의 vlookup을 If (ISERROR (vlookup ...), 0, vlookup (...)로 중첩하여 해결 방법을 적용했습니다. .)). 그런 식으로 AC는 성공적인 가치 또는 0을 반환 할 것이고, 그 다음 IF IF는 그것에 대해 작용할 것입니다. 그 이유에 대해서는 대답하지 않지만 적어도 결과는 나에게 가져옵니다. – Anthony

답변

1

ISERROR 또는 ISNA로 오류를 확인하는 작업은 다른 계산과 별도로 수행해야합니다. OR에서 더 일반적인 기준으로 오류 검사를 중첩 할 수 없습니다. # N/A가 포함 된 셀의 검사를 포함하는 OR은 TRUE 또는 FALSE가 아닌 # N/A를 반환합니다. =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은 계산되지 않습니다.

공백, 0 또는 # N/A가 FCal에서 다른 # N/A를 반환 할 가능성이 있다고 가정하면 IFERROR 인이 더 짧은 버전이 더 좋을 것입니다.

=IFERROR(VLOOKUP(AC358, FCal, 3), VLOOKUP(M358, FCal, 3)) 

TRUE는 VLOOKUP의 range_lookup 매개 변수에 대한 기본값입니다. 명확성을 위해 포함하는 것 이외에는 필요하지 않습니다.

+0

감사합니다. 내가 한 일에 대한 우아한 대안. – Anthony