在此範例中,嵌套 IF 語句的最佳替代方案是什麼?

在此範例中,嵌套 IF 語句的最佳替代方案是什麼?

什麼是比嵌套 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. 如果該行發送的初始電子郵件是不適用這個單元格應該說不適用
  2. 如果發送的初始電子郵件是等候接聽這個單元格應該說等候接聽

其他功能都與目標工作表上的內容相關,而不是概述工作表上的內容:

  1. 如果所有元素都被標記沒有開始,概述中的 A414 單元應該說沒有開始
  2. 如果所有元素都被標記完全的,概述單元格應該說完全的
  3. 在任何其他組合中,(例如所有進行中, 一半完全的& 一半沒有開始)概述單元格應該說進行中

答案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 次出現的儲存格未「未啟動」的儲存格。

相關內容