
我試圖用下面的巢狀公式的 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 中,我將以與前兩個相同的方式格式化它。讓每個部分保持在自己的線上。
下次當你遇到這樣的大公式問題時,請嘗試像我上面所做的那樣將其縮小,這樣你就可以更容易地發現錯誤。