函數–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個判斷式。