什麼是比嵌套 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 單元應該說沒有開始
- 如果所有元素都被標記完全的,概述單元格應該說完全的。
- 在任何其他組合中,(例如所有進行中, 一半完全的& 一半沒有開始)概述單元格應該說進行中。
答案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 次出現的儲存格未「未啟動」的儲存格。