중첩된 if 문 대신 필요한 작업을 수행하는 더 나은 방법(읽고 유지하기 쉽고 리소스 집약적이지 않음)은 무엇입니까?
오른쪽 4개 열의 공식은 모두 동일합니다. 단지 서로 다른 탭의 서로 다른 부분을 참조할 뿐이며 모두 정확히 동일한 방식으로 작동합니다. 초기 이메일 전송 열은 사용자가 선택합니다(데이터 검증). 강조 표시된 수식은 다음과 같습니다.
=IF(OR([Initial Email Sent]="on hold",[Initial Email Sent]="not applicable"),[@[Initial Email
Sent]],IF(COUNTIF(a414engagement[Status],"<>Not Applicable")=0,"Not
Applicable",(IF((COUNTIF(a414engagement[Status],"Not
Started")+(COUNTIF(a414engagement[Status],"In
Progress"))=0),"Completed",(IF(COUNTIF(a414engagement[Status],"In
Progress")+(COUNTIF(a414engagement[Status],"Completed"))>0,"In
Progress","Not Started"))))))
조금 한 입. 이는 다음과 같은 A414 탭의 일부를 나타냅니다.
공식의 목적:
- 이 행에 보낸 초기 이메일이 다음과 같은 경우해당 없음이 셀은 다음과 같이 말해야 합니다.해당 없음.
- 처음 보낸 이메일이 다음과 같은 경우:보류 중이 셀은 다음과 같이 말해야 합니다.보류 중
다른 기능은 모두 개요 워크시트가 아닌 대상 워크시트의 내용과 관련됩니다.
- 모든 요소가 표시되어 있는 경우시작되지 않음, 개요의 A414 셀에 다음과 같이 표시되어야 합니다.시작되지 않음
- 모든 요소가 표시되어 있는 경우완전한, 개요 셀에는 다음과 같이 표시되어야 합니다.완전한.
- 다른 조합에서는(예: 모두진행 중, 반완전한& 반시작되지 않음) 개요 셀은 다음과 같이 말해야 합니다.진행 중.
답변1
귀하의 수식이 귀하의 설명을 완전히 포함하지 않습니다. 설명하신 시나리오에 대한 공식은 다음과 같습니다.
=IF( OR( [Initial Email Sent]="on hold", [Initial Email Sent]="not applicable" ), [@[Initial Email Sent]], IF( COUNTIF( a414engagement[Status], "<>Not Started" )=0, "Not Started", IF( COUNTIF( a414engagement[Status], "<>Completed" )=0, "Completed", "In progress" ) ) )
아니면 이해하기 더 쉬울 수도 있습니다.
=IF(
OR(
[Initial Email Sent]="on hold",
[Initial Email Sent]="not applicable"
),
[@[Initial Email Sent]],
IF(
COUNTIF(
a414engagement[Status],
"<>Not Started"
)=0,
"Not Started",
IF(
COUNTIF(
a414engagement[Status],
"<>Completed"
)=0,
"Completed",
"In progress"
)
)
)
여기서의 비결은 "시작되지 않은" 모든 항목을 계산하는 대신 셀이 "시작되지 않은" 항목을 0개 찾는 것입니다.