我發現有一些初學者在使用 IF 這類函數時,必須使用邏輯判斷,在此不少人卡關。
先想想:數學上「4<X<8」,如果以邏輯表示,應該是「X>4 AND X<8」。
以 Excel 方式表示「AND(A1>4,A1<8)」或是運算「(A1>4)*(A1<8)」。
以上看起來應該還算簡單易於理解,實際來看 Excel 中的實例中的問題。
以下四個公式可以得到相同的結果:
儲存格B4公式:=IF(B4>60,"C",IF(B4>30,"B","A"))
儲存格B4公式:=IF(B4<31,"A",IF(B4<61,"B","C"))
儲存格B4公式:=IFS(B4>60,"C",B4>30,"B",B4>0,"A")
儲存格B4公式:=IFS(B4<31,"A",B4<61,"B",B4<91,"C")
你可不能死背公式的用法,要小心邏輯問題。
例如:
儲存格B4公式:=IF(B4>60,"C",IF(B4>30,"B","A"))
公式由左至右執行,會先判斷條件:B4>60,
(1) 如果條件成立,則會輸出「C」,也不會執行公式:IF(B4>30,"B","A")。
(2) 如果條件不成立,則會繼續執行公式:IF(B4>30,"B","A")。
也就是說執行(1),就不會執行(2)。
如果公式修改如下,則運算式不會出錯,但是結果是錯的。
例如:87, 45, 21 都是小於 91,因此都會傳回結果 C。
所以這是個錯誤的公式設計。
以下這幾個公式,觀念都是以此類推。
儲存格B4公式:=IF(B4<31,"A",IF(B4<61,"B","C"))
儲存格B4公式:=IFS(B4>60,"C",B4>30,"B",B4>0,"A")
儲存格B4公式:=IFS(B4<31,"A",B4<61,"B",B4<91,"C")
現在,問題延伸至設定格式化的條件上。
設定的方式如下:
(1) 儲存格B5預設儲存格底色為紅色。
(2) 儲存格B5格式化的條件:=B4>60,儲存格底色為藍色
(3) 儲存格B5格式化的條件:=B4>30,儲存格底色為綠色
以上的順序不可改變。
如果在設定格式化條件時,將條件:=B4>30先於條件:=B4>60。(和上述順序相反)
則會出現以下的錯誤。數值87仍顯示綠色。因為 B4>30 先成立,所以顯示了綠色。
當在執行邏輯判斷時,真的要注意執行的先後順序。
注意公式裡由左至右的邏輯順序,設定格式化的條件裡的先後邏輯順序。
留言列表