如何使用 and 語句編寫多個 iferror 語句

如何使用 and 語句編寫多個 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 傳回的任何內容和空格" "

現在,假設您想將其中一個 IF 包裝在 IFERROR 中。讓我們看看你的問題是如何表達的,再次進行一些簡化:

=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 中,我將以與前兩個相同的方式格式化它。讓每個部分保持在自己的線上。


下次當你遇到這樣的大公式問題時,請嘗試像我上面所做的那樣將其縮小,這樣你就可以更容易地發現錯誤。

相關內容