我發現有一些初學者在使用 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 先成立,所以顯示了綠色。
當在執行邏輯判斷時,真的要注意執行的先後順序。
注意公式裡由左至右的邏輯順序,設定格式化的條件裡的先後邏輯順序。

請教版主: 設定格式化條件變色中,如果條件達成可以變色。 例如:a›b變紅色 a值會變動累計的 b值是我設定的目標 如果我想加上時間 例如:a›b。在9:00-10:00 條件達成紅色 在10:00 -11:00條件達成黃色 在11:00 -12:00條件達成變綠色 請問這該如何處理?
請參考:https://isvincent.pixnet.net/blog/post/49688058
補充說明:a值是網路數據,b值為設定目標 我將b值除以3,分別在c、d、e,c=b/3,d=c*2,e=c ;我想知道數據進度到哪,當a>c時如果時間落在9點-10點(對應當下電腦時間),就顯示為紅色,如果時間落在10點-11點就顯示黃色,如果時間落在11點-12點就顯示綠色...依此類推,希望可以一眼看出進度到哪?判斷是否落後或是超前。 謝謝板大
請參考:https://isvincent.pixnet.net/blog/post/49688058