函數–IF()

利用Excel整理或分析資料時,有可能需要對資料做分類,例如利用身分證第2碼分辨性別、依據年齡判斷是哪一族群(小孩、少年、青少年、壯年、老年…等)、學生成績計算出來後判斷是否及格…等,都是要針對結果去做判斷或分類。

說明 : 檢查是否符合某一條件,且若為TRUE則傳回某值,若為FALSE則傳回另一值。
原 : IF(logical_test, [value_if_true], [value_if_false])
記 : IF(條件, 條件成立要傳回的值, 條件不成立要傳回的值)

本範例檔案 : 下載

本範例是學生成績,要判斷學生的平均成績是否及格,判斷的條件就是平均成績是否大於等於60。
若以第一位學生當說明,I2儲存格的公式會是
 =IF(H2>=60, “及格”, “不及格”)
如果H2的值大於等於60,即會在I2顯示 及格
反之
就代表H2的值小於60,即會在I2顯示 不及格

I2儲存格的公式
=IF(H2>=60, “及格”, “不及格”)
輸入完成後,往下拖拉即可完成分數的判斷。

一個判斷式,可產生2種結果,例如本範例,判斷 及格 不及格
若是3種結果,則需要2個判斷式;4種結果,需要3個判斷式。以此類推,N個結果需要有N-1個判斷式


三個結果

假設要寫一個判斷式,判斷輸入的值(B1)是 正數 還是 負數,則可能會有以下幾種寫法,結果如下圖
 =IF(B1>0, “正數”, “負數”)
 =IF(B1<0, “負數”, “正數”)
 =IF(B1>=0, “正數”, “負數”)
 =IF(B1<=0, “負數”, “正數”)
註 : 判斷式是寫在 B2 儲存格。


這種幾寫法都可以正確的判斷出正數或負數,但卻有一個盲點,當輸入的值是 0 的時候,這些寫法的結果會不相同。

=IF(B1>0, “正數”, “負數”) ==> 條件是 大於0 為正數,所以 小於等於0 為負數
=IF(B1<0, “負數”, “正數”) ==> 條件是 小於0 為負數,所以 大於等於0 為正數

=IF(B1>=0, “正數”, “負數”) ==> 條件是 大於等於0 為正數,所以 小於0 為負數
=IF(B1<=0, “負數”, “正數”) ==> 條件是 小於等於0 為負數,所以 大於0 為正數

IF(B1>0, “正數”, “負數”) <= 判斷式結果相同 => IF(B1<=0, “負數”, “正數”)
IF(B1<0, “負數”, “正數”) <= 判斷式結果相同 => IF(B1>=0, “正數”, “負數”)


要解決 0 的問題,可以改寫以下 2 個判斷式,將 0 的判斷移出來變成新的判斷式
 =IF(B1>0, “正數”, “負數”)
 =IF(B1<0, “負數”, “正數”)

用新的判斷式將原本的判斷式包起來,寫法與說明如下

寫法1 :

=IF(B1=0, “零”, IF(B1>0, “正數”, “負數”)) 或 =IF(B1=0, “零”, IF(B1<0, “負數”, “正數”))

說明
如果 B1=0, 則顯示 , 否則就執行 IF(B1>0, “正數”, “負數”)IF(B1<0, “負數”, “正數”) 的判斷式。

寫法2 : 

=IF(B1<>0, IF(B1>0, “正數”, “負數”), “零”) 或 =IF(B1<>0, IF(B1<0, “負數”, “正數”), “零”)

說明
如果 B1<>0(不等於0)
, 則執行 IF(B1>0, “正數”, “負數”)IF(B1<0, “負數”, “正數”) 的判斷式, 否則就顯示


這例子有3個結果 : 負數、零、正數,所以會運用到2個判斷式。結果愈多,運用到的判斷式會愈多。
N個結果需要有N-1個判斷式

IF()函數常會 AND()函數OR()函數 一起搭配運用。