및 문을 사용하여 여러 iferror 문을 작성하는 방법

및 문을 사용하여 여러 iferror 문을 작성하는 방법

아래 중첩 수식에 대해 IFERROR 문으로 각 수식을 래핑하려고 합니다. 다른 소스를 검토한 결과 둘 사이에 쉼표를 사용하여 이 작업을 수행할 수 있음을 발견했습니다. 나는 나를 혼란스럽게 하는 것은 & " "각 if 문 사이에 (내가 유지해야 하는) 것이 있다는 것이라고 생각합니다.

아래는 제가 시도한 원래 공식과 최신 공식입니다. 공식이 적용되지 않습니다. 이 작업을 올바르게 수행하는 방법을 잘 모르겠습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

원래 공식

=TRIM(
IFERROR(
IF(AND($T9-TODAY()>=Key!$N$14,$T9-TODAY()<=Key!$M$14,$AA9<>"Complete",$G9<>"New Phase"),Key!$L$11,"")
& " "
& IF(AND($U9-TODAY()>=Key!$N$15,$U9-TODAY()<=Key!$M$15,$AB9<>"Complete",$G9<>"New Phase"),Key!$L$10,"")
& " "
& IF(AND($M9-TODAY()>=Key!$N$9,$M9-TODAY()<=Key!$M$9,$Z9<>"Complete"),Key!$L$9,"")
& " "
& IF(AND($AH9-TODAY()>=Key!$N$16,$AH9-TODAY()<=Key!$M$16,$AE9<>"Complete"),Key!$L$16,"")
,"error"))

새로운 수식

=TRIM(
IFERROR(
IF(AND($T9-TODAY()>=Key!$N$14,$T9-TODAY()<=Key!$M$14,$AA9<>"Complete",$G9<>"New Phase"),Key!$L$11,"")
,"Error MUC Video")),
& " "
IFERROR(
& IF(AND($U9-TODAY()>=Key!$N$15,$U9-TODAY()<=Key!$M$15,$AB9<>"Complete",$G9<>"New Phase"),Key!$L$10,"")
,"Error SMR Video"))
& " "
& IF(AND($M9-TODAY()>=Key!$N$9,$M9-TODAY()<=Key!$M$9,$Z9<>"Complete"),Key!$L$9,"")
& " "
& IF(AND($AH9-TODAY()>=Key!$N$16,$AH9-TODAY()<=Key!$M$16,$AE9<>"Complete"),Key!$L$16,"")

답변1

더 읽기 쉽게 형식이 지정된 크고 지저분한 수식이 있습니다. 따라하기 쉽도록 길이를 짧게 만드는 것부터 시작하겠습니다. 먼저 큰 AND 문을 모두 제거해 보겠습니다.

=TRIM(
IFERROR(
IF(AND(a1,a2,a3,a4),a99,"")
& " "
& IF(AND(b1,b2,b3,b4),b99,"")
& " "
& IF(AND(c1,c2,c3),c99,"")
& " "
& IF(AND($d1,d2,d3),d99,"")
,"error"))

실제로는 완전히 제거해 보겠습니다. AND 수식에 대해 단일 대체 기능을 사용하겠습니다.

=TRIM(
IFERROR(
IF(a1,a99,"")
& " "
& IF(b1,b99,"")
& " "
& IF(c1,c99,"")
& " "
& IF(d1,d99,"")
,"error"))

이제 훨씬 더 쉽게 따라갈 수 있습니다. TRIM은 공백을 제거하고 IFERROR는 오류를 포착합니다. IFERROR 안에는 무엇이 들어있나요? 여러 문자열을 연결한 것입니다.

IF(a1,a99,"") & " " & IF(b1,b99,"") & " " & IF(c1,c99,"") & " " & IF(d1,d99,"")

각 IF 사이에 공백이 어떻게 있는지 보셨나요? 문자열 사이에 앰퍼샌드를 넣으면 문자열을 결합할 수 있습니다 &. 이 경우 문자열은 IF가 반환하는 것과 공백입니다 " ".

이제 IFERROR에 해당 IF 중 하나를 래핑한다고 가정해 보겠습니다. 약간의 단순화를 통해 다시 질문에 해당 내용이 어떻게 포함되어 있는지 살펴보겠습니다.

=TRIM(
IFERROR(
IF(AND(a1,a2,a3,a4),a99,"")
,"Error MUC Video")),
& " "
IFERROR(
& IF(AND(b1,b2,b3,b4),b99,"")
,"Error SMR Video"))
& " "
& IF(AND(c1,c2,c3),c99,"")
& " "
& IF(AND($d1,d2,d3),d99,"")

( )맨 끝에 1만 있기 때문에 괄호가 어딘가에서 엉망이 되었다고 이미 알 수 있습니다 . 지금은 이를 무시하고 IFERROR 부분만 작업해 보겠습니다. 위에서 했던 것처럼 더 단순화할 수 있습니다.

=TRIM(
IFERROR(
IF(a1,a99,"")
,"Error MUC Video")),
& " "
IFERROR(
& IF(b1,b99,"")
,"Error SMR Video"))
& " "
& IF(c1,c99,"")
& " "
& IF(d1,d99,"")

아직 읽기가 좀 어렵네요. 다음과 같이 형식을 지정하면 어떻게 될까요?

=TRIM(
      IFERROR(
              IF(a1,a99,""),"Error MUC Video"
             )
     ),
 & " "
 IFERROR(
         & IF(b1,b99,""),"Error SMR Video"
        )
 )
 & " "
 & IF(c1,c99,"")
 & " "
 & IF(d1,d99,"")

첫 번째 IFERROR 뒤의 괄호는 TRIM 함수를 닫습니다.
두 번째 IFERROR에는 앰퍼샌드가 있습니다.& 내부에함수. 그 전에 있어야합니다.
두 번째 IFERROR 뒤의 괄호는 여는 괄호와 일치하지 않습니다.
닫는 괄호 뒤의 쉼표도 있어서는 안 됩니다.
TRIM 함수에 대한 닫는 괄호가 누락되었습니다.
수식은 다음과 같아야 합니다.

TRIM( IFERROR() & " " & IFERROR() & " " & IF() & " " & IF() )

모든 것을 고려하여 최종 공식이 다음과 같은 형식이면 가장 적합할 것이라고 생각합니다.

=TRIM(
IFERROR(IF(AND($T9-TODAY()>=Key!$N$14,$T9-TODAY()<=Key!$M$14,$AA9<>"Complete",$G9<>"New Phase"),Key!$L$11,""),"Error MUC Video")
& " " & 
IFERROR(IF(AND($U9-TODAY()>=Key!$N$15,$U9-TODAY()<=Key!$M$15,$AB9<>"Complete",$G9<>"New Phase"),Key!$L$10,""),"Error SMR Video")
& " " & 
IF(AND($M9-TODAY()>=Key!$N$9,$M9-TODAY()<=Key!$M$9,$Z9<>"Complete"),Key!$L$9,"")
& " " & 
IF(AND($AH9-TODAY()>=Key!$N$16,$AH9-TODAY()<=Key!$M$16,$AE9<>"Complete"),Key!$L$16,"")
)

마지막 두 개의 IF 문을 자체 IFERROR로 래핑하려면 처음 두 개와 동일한 방식으로 형식을 지정합니다. 각 조각을 자체 라인에 보관하십시오.


다음 번에 큰 수식과 관련된 문제가 발생하면 위에서 했던 것처럼 문제를 줄여서 오류를 더 쉽게 찾아보세요.

관련 정보