Excel IF 系列函數用法教學:多條件判斷搭配 AND、OR、NOT

這裡介紹 Excel 的 IFIFS 條件判斷函數的用法,並提供實用的範例公式。

Excel 的 IFIFS 函數可以進行各種條件的判斷,在不同的情況下傳回不同的計算結果,是 Excel 中最熱門且常用的函數之一,以下是 IFIFS 函數的用法語實際應用範例。

IF 函數

Excel 的 IF 函數是最基本的條件判斷函數,其使用方式為:

=IF(判斷條件,條件成立傳回值,條件不成立傳回值)

假設我們有一些考試成績的分數,若想用 IF 依據分數來判斷是否及格(60 分以上就判定為及格,否則就是不及格),可以這樣寫:

=IF(A2>=60,"及格","不及格")

IF 判斷式

巢狀 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 結構時,要注意安排每個 IF 判斷式的順序,以上面這個例子來說,我們判斷分數的順序是從高分開始依序往下判斷,而您也可以從低方開始依序往上判斷,這樣在判斷分數的時候每次只需要檢查一邊的條件,會比要好寫。

如果沒有按照分數高低的順序來寫的話,在判斷時就會需要使用 AND 函數同時檢查兩邊的條件,問題會變複雜許多,所以建議在撰寫這類的 IF 巢狀結構時,按照順序來寫會比較好。

AND 函數

AND 函數可以用來判斷兩個條件是否同時成立,若兩個條件同時都成立的話,就傳回 True,否則傳回 False

=AND(條件1,條件2)

假設我們現在有兩科不同的考試成績,當兩科的考試成績都在 60 分以上才算及格,否則就是不及格,這種問題就可以使用 IF 搭配 AND 來判斷:

=IF(AND(A2>=60,B2>=60),"及格", "不及格")

IFAND 函數

OR 函數

OR 函數可以用來判斷兩個條件中是否至少有一個是成立的,只要其中一個條件成立(或是兩個都成立),就傳回 True,否則傳回 False

=OR(條件1,條件2)

若我們現在只要求兩科的考試成績中,只要有一科達到 60 分就算及格的話,就可以這樣寫:

=IF(OR(A2>=60,B2>=60),"及格", "不及格")

IFOR 函數

NOT 函數

NOT 就是單純將 True 轉為 False、將 False 轉為 True 的函數,以下是個簡單的範例。

假設所有不是優等的等第,都必須進行補考,可以這樣寫:

=IF(NOT(B2="優等"),"是","否")

IFOR 函數

事實上這個例子也可以改寫一下 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 的效果。

Windows

16 留言

  1. CH

    作者您好,

    因為工作的關係經常瀏覽您的文章,想請問函數是否有功能判斷邏輯如下,

    1.A~Z這26個項目在特地條件下挑選出10個符合條件的項目

    2.超過10個符合條件的項目時,優先順序是字母小到字母大的(A~Z)或是字母大到字母小的(Z~A)

    再麻煩請您解惑,這邊先謝謝您了

    • CH

      抱歉補充一下,

      第1點的特定條件是我給的假設,任意條件都可以

      主要是第2點的邏輯函數,謝謝

  2. abby

    作者您好,

    請教您一道題:8.5元/M, 最少收40元,計算結果二者選價格高的,怎麽設置公式?這題低於5M就選40元,若超過5m則需要依實際算出的爲準

    如果可以設置公式的話,麻煩您解惑,謝謝您喔~

    • Kenny

      =IFS(A125,A12*8.5)

      • KENNY

        答案不是這樣,但他符號出不來,沒辦法。

    • SAM

      =if(條件1*條件2<40,40,條件1*條件2)

  3. ALLEN

    abby
    作者您好,
    True成立的情況下,值,不成立的情況下,不傳回False該怎麼做,
    例:TO DAY()今天True成立的情況,傳回指定的值
    明天不成立,不傳回值
    相當於固定傳回的值

  4. 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才對呀

    請問是哪裡錯了呢

  5. WEI

    請問是否有函數能完成兩種條件的求值
    我目前是已產品名稱去取得我的總入庫數
    =SUMIF(表1[[產品名稱]:[入庫數]],I6,表1[入庫數])
    若我想要以產品名稱+顏色去取得入庫數要怎麼使用?
    例如我的商品名稱為IPHONE12 那麼顏色就會分很多種 所以想要符合兩項條件才能取值的函數

  6. Charles

    請問一下同理如果是要判斷語句中的文字,也可使用ifs嗎?
    如:
    aaa你媽的bbb, –我的…., 他有我xxxxxx
    分別找出’你媽的’,’我的’,’他有我’

    是不是寫成ifs(mid(A2,find(“你媽的”,A2,1),3)>0,”你媽的”,
    mid(A2,find(“我的”,A2,1),)>0,”我的”,
    true,”他有我”)

  7. David Tsui

    請問:
    我要在某個範圍內找數字,然後回傳數值
    例如: IF>=65 回傳1
    IF>40 <65 回傳3
    IF<40 回傳5
    上述需同時判斷,請問公式該如何寫?
    感謝!

  8. 黃宥熙

    IF的函數用來換算成績的等第時,成績如果有小數點的話公式套用進去有小數點的數字都是出現FALSE的英文單字。最後我改用Vlookup的公式來處理。請問有人可以分享如果有小數點的

  9. 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”,”未測”)))

  10. SAMMI

    您好,我想請教IF的多重判斷,
    如果我想要訂便當時,能自已判斷儲存格裡是”不訂餐”跟”請假”
    會自動帶出0
    但我一直寫不出來,是否可以幫忙告知如何撰寫公式

    =IF(‘ 06月明細’!D3=”不訂餐”,0,1)

    • J

      =IF(OR(B1=”不訂餐”,B1=”請假”),0,1)
      這樣嗎(?

Comments are Closed