這裡介紹 Excel 的 IFIFS 條件判斷函數的用法,並提供實用的範例公式。

Excel 的 IFIFS 函數可以進行各種條件的判斷,在不同的情況下傳回不同的計算結果,是 Excel 中最熱門且常用的函數之一,以下是 IFIFS 函數的用法語實際應用範例。

IF 函數

Excel 的 IF 函數是最基本的條件判斷函數,其使用方式為:

IF(判斷條件,條件成立傳回值,條件不成立傳回值)

假設我們有一些考試成績的分數,若想用 IF 依據分數來判斷是否及格(60 分以上就判定為及格,否則就是不及格),可以這樣寫:

IF(A2>=60,"及格","不及格")

IF 判斷式

巢狀 IF 判斷式

如果判斷的條件比較複雜,包含多種條件與輸出結果時,可以使用巢狀的 IF 判斷式。

假設我們想要根據成績來區分等第,規則如下:

等第 分數區間
優等 分數 >= 90
甲等 80 <= 分數 < 90
乙等 70 <= 分數 < 80
丙等 分數 < 70

像這種多條件的判斷問題,就可以使用多個 IF 組合在一起:

=IF(A2>=90,"優等",IF(A2>=80,"甲等",IF(A2>=70,"乙等","丙等")))

這個巢狀的 IF 結構看似複雜,但是觀念都跟基本的 IF 相同,先從最外層的 IF 開始看起,第一個 IF 會判斷成績是否有 90 分,若有 90 分的話,就直接傳回「優等」,如果沒有 90 分的話,則進入第二層的 IF 判斷式。

當進入到第二層的 IF 判斷式時,代表成績一定在 90 分以下(因為如果有 90 分,之前就直接傳回「優等」了,不會進到這裡),所以這裡我們只要判斷成績是否有 80 分,若有 80 分的話就傳回「甲等」,否則就再進入下一層 IF 判斷式。

到了第三層的 IF 時,成績一定在 80 分以下,判斷到這裡的時候,就只剩下「乙等」與「丙等」兩個等第可以選擇了,所以就直接看成績是否有 70 分,若有 70 分就是「乙等」,否則就是「丙等」。

巢狀 IF 結構

在撰寫巢狀的 IF 結構時,要注意安排每個 IF 判斷式的順序,以上面這個例子來說,我們判斷分數的順序是從高分開始依序往下判斷,而您也可以從低方開始依序往上判斷,這樣在判斷分數的時候每次只需要檢查一邊的條件,會比要好寫。

如果沒有按照分數高低的順序來寫的話,在判斷時就會需要使用 AND 函數同時檢查兩邊的條件,問題會變複雜許多,所以建議在撰寫這類的 IF 巢狀結構時,按照順序來寫會比較好。

AND 函數

AND 函數可以用來判斷兩個條件是否同時成立,若兩個條件同時都成立的話,就傳回 True,否則傳回 False

AND(條件1,條件2)

假設我們現在有兩科不同的考試成績,當兩科的考試成績都在 60 分以上才算及格,否則就是不及格,這種問題就可以使用 IF 搭配 AND 來判斷:

=IF(AND(A2>=60,B2>=60),"及格", "不及格")

IFAND 函數

OR 函數

OR 函數可以用來判斷兩個條件中是否至少有一個是成立的,只要其中一個條件成立(或是兩個都成立),就傳回 True,否則傳回 False

OR(條件1,條件2)

若我們現在只要求兩科的考試成績中,只要有一科達到 60 分就算及格的話,就可以這樣寫:

=IF(OR(A2>=60,B2>=60),"及格", "不及格")

IFOR 函數

NOT 函數

NOT 就是單純將 True 轉為 False、將 False 轉為 True 的函數,以下是個簡單的範例。

假設所有不是優等的等第,都必須進行補考,可以這樣寫:

IF(NOT(B2="優等"),"是","否")

IFOR 函數

事實上這個例子也可以改寫一下 IF 判斷式,這樣就可以不需要加上 NOT 函數了:

IF(B2="優等","否","是")

大部分的情況下,我們都可以適當改寫判斷的邏輯,省去 NOT 函數,至於是否要這麼做就要看情況而定,建議盡量讓程式好閱讀、好理解為原則。

IFS 函數

IFS 函數IF 函數類似,不過它可以依序檢查許多個不同的條件,傳回符合條件的結果,可用來取代多重巢狀的 IF 結構,讓程式碼更簡潔、好閱讀,不過這個函數只有在 Office 2016 以後才有支援。

其使用方式為:

IFS(條件1,傳回值1,條件2,傳回值2,...)

我們可以將上面判斷成績等第的範例以 IFS 判斷式改寫為:

=IFS(A2>=90,"優等",A2>=80,"甲等",A2>=70,"乙等",TRUE,"丙等")

在這個 IFS 的參數中,我們依序把各種等第的條件與傳回值放進去,這樣它就會傳回對應條件的傳回值,如果所有的條件都不成立的話,IFS 就會傳回 #N/A 錯誤。

如果想要在所有條件都不成立的情況下,傳回指定的值,可將最後一個判斷條件設定為 True,這樣只要前面的條件都沒有符合,就一定會傳回最後一個值,等同於 else 的效果。