這裡介紹 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 的效果。
CH
作者您好,
因為工作的關係經常瀏覽您的文章,想請問函數是否有功能判斷邏輯如下,
1.A~Z這26個項目在特地條件下挑選出10個符合條件的項目
2.超過10個符合條件的項目時,優先順序是字母小到字母大的(A~Z)或是字母大到字母小的(Z~A)
再麻煩請您解惑,這邊先謝謝您了
CH
抱歉補充一下,
第1點的特定條件是我給的假設,任意條件都可以
主要是第2點的邏輯函數,謝謝
abby
作者您好,
請教您一道題:8.5元/M, 最少收40元,計算結果二者選價格高的,怎麽設置公式?這題低於5M就選40元,若超過5m則需要依實際算出的爲準
如果可以設置公式的話,麻煩您解惑,謝謝您喔~
Kenny
=IFS(A125,A12*8.5)
KENNY
答案不是這樣,但他符號出不來,沒辦法。
SAM
=if(條件1*條件2<40,40,條件1*條件2)
ALLEN
abby
作者您好,
True成立的情況下,值,不成立的情況下,不傳回False該怎麼做,
例:TO DAY()今天True成立的情況,傳回指定的值
明天不成立,不傳回值
相當於固定傳回的值
RU
您好我想請問一下
如果要符合下面這個
X≧0.08
0.07≧X≧0.04
0.03≧X
那我 X=0.04,EXCEL公式這樣寫
=IF(X<0.04,"X",IF(X<0.08,"X-0.01","X-0.02"))
代出來的答案是 0.02
應該是0.03才對呀
請問是哪裡錯了呢
WEI
請問是否有函數能完成兩種條件的求值
我目前是已產品名稱去取得我的總入庫數
=SUMIF(表1[[產品名稱]:[入庫數]],I6,表1[入庫數])
若我想要以產品名稱+顏色去取得入庫數要怎麼使用?
例如我的商品名稱為IPHONE12 那麼顏色就會分很多種 所以想要符合兩項條件才能取值的函數
Charles
請問一下同理如果是要判斷語句中的文字,也可使用ifs嗎?
如:
aaa你媽的bbb, –我的…., 他有我xxxxxx
分別找出’你媽的’,’我的’,’他有我’
是不是寫成ifs(mid(A2,find(“你媽的”,A2,1),3)>0,”你媽的”,
mid(A2,find(“我的”,A2,1),)>0,”我的”,
true,”他有我”)
David Tsui
請問:
我要在某個範圍內找數字,然後回傳數值
例如: IF>=65 回傳1
IF>40 <65 回傳3
IF<40 回傳5
上述需同時判斷,請問公式該如何寫?
感謝!
黃宥熙
IF的函數用來換算成績的等第時,成績如果有小數點的話公式套用進去有小數點的數字都是出現FALSE的英文單字。最後我改用Vlookup的公式來處理。請問有人可以分享如果有小數點的
kimiko
請問 當一列有3個欄位,此列數字中有0 傳回”OK”;有1傳回”NG”,沒有數字傳回”未測”。
=IF(OR($B4=1,$C4=1,$D4=1,”NG”,”OK”),可以得到回傳NG或是OK,再來要得到沒有數字的未測,我寫不出來。
求協助~~謝謝
Jay
=IF(OR(B4=””,C4=””,D4=””),”未測”,
IF(AND(B4=0,C4=0,D4=0),”OK”,
IF(OR(B4=1,C4=1,D4=1),”NG”,”未測”)))
SAMMI
您好,我想請教IF的多重判斷,
如果我想要訂便當時,能自已判斷儲存格裡是”不訂餐”跟”請假”
會自動帶出0
但我一直寫不出來,是否可以幫忙告知如何撰寫公式
=IF(‘ 06月明細’!D3=”不訂餐”,0,1)
J
=IF(OR(B1=”不訂餐”,B1=”請假”),0,1)
這樣嗎(?