這裡介紹 Excel 的 IF
與 IFS
條件判斷函數的用法,並提供實用的範例公式。
Excel 的 IF
與 IFS
函數可以進行各種條件的判斷,在不同的情況下傳回不同的計算結果,是 Excel 中最熱門且常用的函數之一,以下是 IF
與 IFS
函數的用法語實際應用範例。
IF
函數Excel 的 IF
函數是最基本的條件判斷函數,其使用方式為:
=IF(判斷條件,條件成立傳回值,條件不成立傳回值)
假設我們有一些考試成績的分數,若想用 IF
依據分數來判斷是否及格(60 分以上就判定為及格,否則就是不及格),可以這樣寫:
=IF(A2>=60,"及格","不及格")
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
判斷式的順序,以上面這個例子來說,我們判斷分數的順序是從高分開始依序往下判斷,而您也可以從低方開始依序往上判斷,這樣在判斷分數的時候每次只需要檢查一邊的條件,會比要好寫。
如果沒有按照分數高低的順序來寫的話,在判斷時就會需要使用 AND
函數同時檢查兩邊的條件,問題會變複雜許多,所以建議在撰寫這類的 IF
巢狀結構時,按照順序來寫會比較好。
AND
函數AND
函數可以用來判斷兩個條件是否同時成立,若兩個條件同時都成立的話,就傳回 True
,否則傳回 False
。
=AND(條件1,條件2)
假設我們現在有兩科不同的考試成績,當兩科的考試成績都在 60
分以上才算及格,否則就是不及格,這種問題就可以使用 IF
搭配 AND
來判斷:
=IF(AND(A2>=60,B2>=60),"及格", "不及格")
OR
函數OR
函數可以用來判斷兩個條件中是否至少有一個是成立的,只要其中一個條件成立(或是兩個都成立),就傳回 True
,否則傳回 False
。
=OR(條件1,條件2)
若我們現在只要求兩科的考試成績中,只要有一科達到 60
分就算及格的話,就可以這樣寫:
=IF(OR(A2>=60,B2>=60),"及格", "不及格")
NOT
函數NOT
就是單純將 True
轉為 False
、將 False
轉為 True
的函數,以下是個簡單的範例。
假設所有不是優等的等第,都必須進行補考,可以這樣寫:
=IF(NOT(B2="優等"),"是","否")
事實上這個例子也可以改寫一下 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 的效果。