公式不起作用,找不到公式中的錯誤

公式不起作用,找不到公式中的錯誤

我確信這有一個非常簡單的答案,但我已經研究了這個公式幾個小時,但無法找出錯誤。本質上,我想要公式做的是,如果 F3 =“新生”,則檢查 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.5range 中的值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])))

這些很可能可以進一步改進。不過,我希望我至少給了你一個想法。

相關內容