Chapter 6. 函式 (一):邏輯與運算6.4 條件判斷

6.4 條件判斷


本節將介紹條件判斷相關的函式,包括 IF / IFS / SWITCH,都是「如果 … 就 ...,不然就 ...」,但使用時機與用法不同,分別如下:

  • IF:適用於只有一個條件需要判斷時

語法

IF (邏輯運算式, TRUE的值, FALSE的值)

輸入

  • 邏輯運算式:即輸出是 TRUE / FALSE 的項目,通常是公式。
  • TRUE的值 / FALSE的值邏輯運算式 是 TRUE / FALSE 要輸出的值。

輸出

TRUE的值 或 FALSE的值

  • IFS:適用於有多個條件需要判斷時

語法

IFS (條件_1, 值_1, [條件_2, 值_2,…])

輸入

  • 條件_n:邏輯運算式,即輸出是 TRUE / FALSE 的項目,通常是公式。
  • 值_n:若 條件_n 為 TRUE 時輸出的值。

輸出

值_1值_2 等,若所有 條件 都是 FALSE 將輸出 #N/A!。

  • SWITCH:適用於判斷某個範圍是否為某個值時

語法

SWITCH (運算式, 事例_1, 值_1, [事例_2, 值_2,…], [預設值])

輸入

  • 運算式:要判斷的有效值、單一儲存格或儲存格範圍。
  • 事例_n:用來比對 運算式 的條件,只能是文字或,例如 "X"、1。
  • 值_n:若符合 事例_n 時要回傳的值。
  • 預設值:若 運算式 不符合所有的 事例_n 時回傳的值,預設為 #N/A!。

輸出

值_1值_2 或 預設值

以下使用三個範例分別說明以上函式的用法,完成結果如下:


  1. 在 G2:G9 判斷是否學生為 Passed / Failed,判斷依據為「總平均 >= 60 分」

    公式

    G2 的公式為 =IF(F2>=60,"Passed","Failed")。

    解說

    • 只有單一條件,因此可直接使用 IF 完成。
    • 輸入 G2 的公式後只要將公式往下拖曳至 G3:G9 即可。
  2. 在 H2:H9 輸出等第 A / B / C / F,分界依序為總平均 80 / 70 / 60 分,例如 80 分以上為 A、70 分以上但未滿 80 分為 B,以此類推

    公式

    H2 的公式為 =IFS(F2>=80,"A",F2>=70,"B",F2>=60,"C",F2<60,"F")。

    解說

    • 有多個條件適合使用 IFS / SWITCH,但在此要比較數字大小故不適用 SWITCH,所以使用 IFS。
    • 在輸入條件時彼此之間不用獨立,只要確保最優先的條件最先被列出來即可,所以不用列 =IFS(F3>=80,"A",AND(F3>=70,F3<80),"B",...),因為若 F3>=80 就會直接輸出 "A",不會接著判斷後面的條件。在此最優先的條件為 F3>=80,以此類推。
    • 最後要列 =IFS(...,F3<60,"F") 是為了考慮所有情況而不會有 #N/A!。
    • 輸入 H2 的公式後只要將公式往下拖曳至 H3:H9 即可。

    了解上述內容後,可以嘗試使用 =IFS(F3<80,"F",...) 替換上述公式,確保自己是否理解。

  3. 在 I2:I9 將 H2:H9 的等第轉換為文字敘述,A 為「優秀」、B 為「不錯」、 C / F 為「待加強」

    公式

    I2 的公式為 =SWITCH(H2:H9,"A","優秀","B","不錯","待加強")。

    解說

    • 有多個條件且不需要比較數字大小,可直接使用 SWITCH,因此運算是可直接使用 H2:H9,就不用在 I3:I9 輸入一樣的公式。
    • 在此將預設值設為 "待加強",當然也可以依序判斷 C、F。

了解上述函式用法後,接下來再介紹 IFNA / IFERROR 兩個函式,用來使錯誤值不要直接輸出錯誤,而是輸出指定內容,說明如下:

語法

  • IFNA (, [na_錯誤時的值])
  • IFERROR (, [錯誤時的值])

輸入

  • :本身不是錯誤值時要傳回的值。
  • na_錯誤時的值 / 錯誤時的值 為錯誤時的輸出,預設為 "" (空值)。

輸出

  • IFNA:若  是 #N/A 則輸出 na_錯誤時的值,不然輸出
  • IFERROR:若  是任何一種錯誤則輸出 錯誤時的值,不然輸出

下圖沿用了第 6.2 節的範例,說明 IFNA / IFERROR 遇到各種類型錯誤的輸出。