나는 이것이 믿을 수 없을 만큼 간단한 답을 가지고 있다고 확신하지만 이 공식을 몇 시간 동안 살펴보았지만 오류를 알아낼 수 없었습니다. 기본적으로 제가 수식에서 수행하려는 작업은 F3 = "Freshman"인 경우 U3가 비어 있는지 확인하고 N3을 거쳐 값을 입력하고, U3이 비어 있지 않으면 U3을 거치는 것입니다. 그런 다음 F3 != "Freshman"이고 V3가 비어 있으면 S3을 수행하고 V3이 비어 있지 않으면 V3을 사용하십시오. 어쩌면 이것에 대해 덜 복잡한 방법이 있을 수도 있지만 확실하지 않습니다.
=IF(ISBLANK($U3)=TRUE,IF($F3="Freshman",IF(N3>=Lists!$H$7,3,IF(N3>=Lists!$H$6,2.5,IF(N3>=Lists!$H$5,2,IF(N3>=Lists!$H$4,1.5,IF(N3>=Lists!$H$3,1,IF(N3>=Lists!$H$2,0.5,IF(N3>Lists!$H$8,0,""))))))),IF(U3>=Lists!$I$7,3,IF(U3>=Lists!$I$6,2.5,IF(U3>=Lists!$I$5,2,IF(U3>=Lists!$I$4,1.5,IF(U3>=Lists!$I$3,1,IF(U3>=Lists!$I$2,0.5,IF(U3>=Lists!$I$8,"")))))))),IF(ISBLANK($V3)=TRUE,IF(S3>=Lists!$H$7,3,IF((S3>=Lists!$H$6,2.5,IF(S3>=Lists!$H$4,1.5,IF(S3>=Lists!$H$3,1,IF(S3>=Lists!$H$2,0.5,IF(S3>Lists!$H$8,0,"")))))),IF(V3>=Lists!$I$7,3,IF(V3>=Lists!$I$6,2.5,IF(V3>=Lists!$I$5,2,IF(V3>=Lists!$I$4,1.5,IF(V3>=Lists!$I$3,1,IF(V3>=Lists!$I$2,0.5,IF(V3>=Lists!$I$8,0,"")))))))))
나는 중첩된 if가 많이 있다는 것을 알고 있는데, 이것이 아마도 나를 넘어지게 할 것입니다. 누구든지 도움을 주시면 정말 감사하겠습니다.
답변1
메모장에 수식을 넣어두었습니다. 그런 다음 모든 조건에 대해 새 줄을 시작하고 탭을 사용하여 다양한 IF 함수를 정렬했습니다. 이렇게 하면 문제를 디버깅하기가 더 쉬워집니다. 아쉽게도 파일을 업로드하는 방법을 모르겠습니다. 나는 마지막 ")"이 너무 많고 공식에 일부 불일치가 있음을 발견했습니다.
예를 들어 두 번째 목록에서 마지막 문은 S3>=lists$I$8,"")로 끝나는 반면 다른 목록에서는 S3>=lists$I$8,0,"")로 끝납니다.
세 번째 목록에서는 IF(U3>=Lists!$H$4,2가 누락되었습니다.
원하시면 직접 확인하실 수 있도록 파일을 보내드릴 수 있습니다.
답변2
여기에는 코드화된 표기법이 있습니다.
=IF(ISBLANK($U2)=TRUE, 'if condition #1
IF($F3="Freshman", '#1 true condition
IF(N3>=Lists!$H$7,3,
IF(N3>=Lists!$H$6,2.5,
IF(N3>=Lists!$H$5,2,
IF(N3>=Lists!$H$4,1.5,
IF(N3>=Lists!$H$3,1,
IF(N3>=Lists!$H$2,0.5,
IF(N3>Lists!$H$8,0,"")
)
)
)
)
)
),
IF(S3>=Lists!$I$7,3, '#1 false condition
IF(S3>=Lists!$I$6,2.5,
IF(S3>=Lists!$I$5,2,
IF(S3>=Lists!$I$4,1.5,
IF(S3>=Lists!$I$3,1,
IF(S3>=Lists!$I$2,0.5,
IF(S3>=Lists!$I$8,"")
)
)
)
)
)
)
), 'everything before the comma is one function
IF(ISBLANK($V2)=TRUE, 'new #2 if condition
IF(U3>=Lists!$H$7,3, '#2 true condition
IF((U3>=Lists!$H$6,2.5,
IF(U3>=Lists!$H$4,1.5,
IF(U3>=Lists!$H$3,1,
IF(U3>=Lists!$H$2,0.5,
IF(Lists!$H$8,0,"") 'here is an if without a test condition
)
)
)
)
),
IF(V3>=Lists!$I$7,3, '#2 false condition
IF(V3>=Lists!$I$6,2.5,
IF(V3>=Lists!$I$5,2,
IF(V3>=Lists!$I$4,1.5,
IF(V3>=Lists!$I$3,1,
IF(V3>=Lists!$I$2,0.5,
IF(V3>=Lists!$I$8,0,"")
)
)
)
)
)
)
)
)
)
답변3
대안은 다음과 같습니다. 중첩을 줄입니다.
도우미 열을 추천하고 싶지만 꼭 필요한 것은 아닙니다. 도우미 열을 사용하면 수식은 다음과 같습니다.
[N]: {=IFERROR(CHOOSE(LARGE(ROW($H$2:$H$7)*(N3>=$H$2:$H$7),1)-1,0.5,1,1.5,2,2.5,3),IF(N3>=$H$8,0,""))}
[S]: {=IFERROR(CHOOSE(LARGE(ROW($I$2:$I$7)*(S3>=$I$2:$I$7),1)-1,0.5,1,1.5,2,2.5,3),IF(S3>=$I$8,0,""))}
[U]: {=IFERROR(CHOOSE(LARGE(ROW($H$2:$H$7)*(U3>=$H$2:$H$7),1)-1,0.5,1,1.5,2,2.5,3),IF(U3>=$H$8,0,""))}
[V]: {=IFERROR(CHOOSE(LARGE(ROW($I$2:$I$7)*(V3>=$I$2:$I$7),1)-1,0.5,1,1.5,2,2.5,3),IF(V3>=$I$8,0,""))}
=IF(ISBLANK($U3),IF($F3="Freshman",[N],[U],IF(ISBLANK($V3),[S],[V])))
0.5 to 3 step 0.5
또는 데이터에 공간이 있는 경우 범위에 값을 추가하는 것이 좋습니다 J2:J7
. 필요한 경우 수식을 건드리지 않고도 값을 변경할 수 있으므로 유지 관리가 더 쉬워질 수 있습니다. 그렇게 하면 공식은 다음과 같을 수 있습니다.
[N]: {=IFERROR(INDEX($J$2:$J$8,LARGE(ROW($H$2:$H$7)*(N3>=$H$2:$H$7),1)-1),IF(N3>=$H$8,0,""))}
[S]: {=IFERROR(INDEX($J$2:$J$8,LARGE(ROW($I$2:$I$7)*(S3>=$I$2:$I$7),1)-1),IF(S3>=$I$8,0,""))}
[U]: {=IFERROR(INDEX($J$2:$J$8,LARGE(ROW($H$2:$H$7)*(U3>=$H$2:$H$7),1)-1),IF(U3>=$H$8,0,""))}
[V]: {=IFERROR(INDEX($J$2:$J$8,LARGE(ROW($I$2:$I$7)*(V3>=$I$2:$I$7),1)-1),IF(V3>=$I$8,0,""))}
=IF(ISBLANK($U3),IF($F3="Freshman",[N],[U],IF(ISBLANK($V3),[S],[V])))
아마도 이러한 부분은 더욱 개선될 수 있을 것입니다. 그래도 적어도 당신에게 아이디어를 주었기를 바랍니다.