Excel IF終極教學:基本+多條件範例、條件變色、搭配AND、OR用法

IF 函數是 EXCEL 中30個必學函數之一。我們可以透過 IF 函數設定某個條件,滿足該條件時回傳 A 值,不滿足時則回傳 B 值,使整理資料時更加有效率。

本文將會用 5 分鐘的時間,教會你 IF 函數的基本用法、範例教學、3種IF多條件設定方法、格式化條件變色、判定日期範圍以及常見錯誤等等。

那麼我們就開始吧!

IF 函數基本用法

IF 函數用於設定某個條件,滿足該條件時回傳 A 值,不滿足時則回傳 B 值。以下是 IF 函數的語法:

=IFNA(logical_test,[value_if_true],[value_if_false])
引數名稱解釋
logical_test又稱「邏輯表示式」。通常是「C3>100」、「C3=”已付款”」等條件,計算後只會有 TRUE / FALSE 兩種結果。
[value_if_true]如果條件為 TRUE,則回傳……
[value_if_false]如果條件為 FALSE,則回傳……

接著,我們來看看IF函數的範例教學。


IF 函數範例教學

假設我們想要知道班上學生的及格狀況,利用 IF 函數就可以很快地讓及格的顯示「V」,不及格的顯示「X」

=IF(B2>=60,"V","X")
引數名稱解釋範例
logical_test邏輯表示式B2>=60(判斷 B2>=60 為 TRUE 還是 FALSE)
[value_if_true]如果條件為 TRUE,則回傳……“V”(如果 B2>=60 為 TRUE,回傳 V)
[value_if_false]如果條件為 FALSE,則回傳……“X”(如果 B2>=60 為 FALSE,回傳 X)

或者,我們也可以透過 IF 函數幫不及格的分數乘上 1.1 倍:

=IF(B2>=60,B2,B2*1.1)

IF 函數也可以用於判斷文字條件:

=IF(B2="男","V","X")

最後,補充一些常用的邏輯表示式

使用情境(與數字有關)邏輯表示式
如果C3大於60=IF(C3>60, ……)
如果C3大於等於60=IF(C3>=60, ……)
如果C3小於60=IF(C3<60, ……)
如果C3小於等於60=IF(C3<=60, ……)
如果C3等於60=IF(C3=60, ……)
如果C3不等於60=IF(C3<>60, ……),EXCEL 中的「<>」代表「≠」
使用情境(與文字有關)邏輯表示式
如果C3是空的資料=IF(C3=””, ……)
如果C3不是空的資料=IF(C3<>””, ……)
如果C3等於「男生」=IF(C3=”男生”, ……)
如果C3不等於「男生」=IF(C3<>”男生”, ……)

IF 函數 3 種多條件用法

IF 函數設定多條件的方法有 3 種,各有各的用途:

  • 在 IF 裡面加入 AND、OR 函數:用於處理「A且B」以及「A或B」的條件
  • 多層 IF 的巢狀結構:用於處理分段條件
  • 直接改用 IFS 函數:也用於處理分段條件,但比巢狀 IF 簡潔很多

IF 函數多條件用法 1:搭配 AND、OR 處理「A且B」及「A或B」

處理「A且B」以及「A或B」的條件時,我們可以在 IF 函數中加入 AND 函數與 OR 函數,增加條件的變化性。

使用範例:利用 IF+AND 函數找出「國文及格且英文及格」的人:

=IF(AND(B2>=60,C2>=60),"V","X")

當兩個條件皆為 TRUE 時,AND 就會回傳 TRUE,IF 函數收到 TRUE 便會回傳「V」;當有其中一個條件為 FALSE 時,AND 就會回傳 FALSE,IF 函數收到 FALSE 便會回傳「X」。

使用範例:利用 IF+OR 函數找出「國文及格或英文及格」的人

=IF(OR(B2>=60,C2>=60),"V","X")

當其中一個條件為 TRUE 時,OR 就會回傳 TRUE,IF 函數收到 TRUE 便會回傳「V」;當有兩個條件皆為 FALSE 時,OR 就會回傳 FALSE,IF 函數收到 FALSE 便會回傳「X」。

另外,AND 與 OR 都可以包含 3 個條件以上

=IF(AND(B2>=60,C2>=60,D2>=60),"V","X")

AND 函數只要有一個是 FALSE 就會回傳 FALSE,OR 函數只要有一個是 TRUE 就會回傳 TRUE。邏輯詳情可以看真值表


IF 函數多條件用法 2:巢狀結構處理分段條件

如果我們要設定分段條件,則可以利用 IF 巢狀結構,也就是一層 IF 包另一層 IF,一直包到所有分段條件都設定完畢。

使用範例:如果分數高於 80 分回傳「讚」,高於 60 分回傳「中等」,否則回傳「不及格」:

=IF(B2>=60,IF(B2>=80,"讚", "中等" ), "不及格" )

當第一層條件為 TRUE 時,則會進入下一層條件,直到滿足最裡面一層或中途不滿足條件而停止。

如果還是不太清楚,以下是該 IF 函數的運算過程:

  1. 外層IF函數:判斷78是否大於等於60?TRUE ➠ 測試內層IF函數。
  2. 內層IF函數:判斷78是否大於等於80?FALSE ➠ 回傳「中等」,運算結束。

接下來再複雜一點,進入到 3 層 IF 函數,將分數分為 4 個區間。

使用範例:如果分數高於 90 分回傳「優秀」,高於 80 分回傳「讚」,高於 60 分回傳「中等」,否則回傳「不及格」:

=IF(B2>=60,IF(B2>=80,IF(B2>=90,"優秀","讚"),"中等"),"不及格")

以下是該 IF 函數的運算過程:

如果分數是 96 分:

  1. 外層IF函數:判斷96是否大於等於60?TRUE ➠ 測試中層IF函數。
  2. 中層IF函數:判斷96是否大於等於80?TRUE ➠ 測試內層IF函數。
  3. 內層IF函數:判斷96是否大於等於90?TRUE ➠ 回傳「優秀」,運算結束。

如果分數是 74 分:

  1. 外層IF函數:判斷74是否大於等於60?TRUE ➠ 測試中層IF函數。
  2. 中層IF函數:判斷74是否大於等於80?FALSE ➠ 回傳「中等」,運算結束。

如果看到這裡開始暈頭轉向的話,你可以試試看用接下來介紹的 IFS 函數處理分段,會舒服超級多。


IF 函數多條件用法 3:改用 IFS 函數更好處理分段條件

事實上,IF 函數還有一個多條件版本的函數,就是 IFS 函數。IFS 函數用於根據多個條件進行邏輯測試,並返回首個符合條件的結果,以避免使用過於複雜的巢狀 IF 函數,讓公式更加簡潔。

以下是 IFS 函數的語法:

=IFS(test1,value1,test2,value2,...)
引數解釋
test1邏輯表示式1
value1如果邏輯表示式1為TRUE,則回傳……
test2邏輯表示式2
value2如果邏輯表示式2為TRUE,則回傳……

IFS 函數會先檢查「邏輯表示式1」是否為 TRUE,為 TRUE 就顯示「value1」設定的值,不為TRUE就繼續檢查「邏輯表示式2」,以此類推,直到最後一個引數檢查完畢。

使用範例:我們沿用前面 IF 巢狀結構的例子,但是這次是用 IFS 函數去設定多條件:

=IFS(B2>=90,"優秀",B2>=80,"讚",B2>=60,"中等",B2<60,"不及格")

如此一來 IFS 函數就可以將班上的分數進行分段囉!IFS 函數是不是比 IF 的巢狀還要更簡潔易懂呢!


IF 進階用法 1:利用條件式格式設定變色

我們可以利用 EXCEL 的「條件式格式設定」將符合條件的儲存格進行變色。

當我們點擊「常用」⭢「條件式格式設定」⭢「新增規則」,並選取最下面的「使用公式來決定要格式化哪些儲存格」時,會看到「格式化在此公式為True的值」:

也就是說,在這裡要輸入的公式,結果只能是 TRUE,EXCEL 才會將該儲存格依照我們設定的格式去調整。

因此,這裡要輸入的並不是 IF 函數,而是 IF 函數的第一個引數,也就是只會回傳 TRUE 或 FALSE 的「邏輯表示式」

當邏輯表示式為 TRUE 時,EXCEL 才會進行變色等格式套用。

使用範例:將不及格的分數用黃色底標註出來:

STEP. 1:我們先選取資料範圍,並點擊「常用」⭢「條件式格式設定」⭢「新增規則」。

STEP. 2:選取最下面的「使用公式來決定要格式化哪些儲存格」,並在公式處輸入:

=B2<60

STEP. 3:點擊「格式」,並設定希望變色的儲存格顏色、文字顏色等等,最後按下「確定」。

STEP. 4:就可以看到「<60為 TRUE」的儲存格依照我們設定的格式進行變色啦!


IF 進階用法 2:條件判斷日期範圍

因為在 EXCEL 的眼中,日期其實就是不斷累加的 5 位數字,像是 2024/10/22 是 45587,2024/10/23 是 45588,以此類推。

因此,若要設定日期範圍,只要利用 DATEVALUE 函數將日期轉為數字,再去比較大小即可。

使用範例:將屬於 2024 下半年(介於 2024/07/01~2024/12/31)的日期打勾:

=IF(AND(A2>=DATEVALUE("2024/07/01"),A2<=DATEVALUE("2024/12/31")),"V","X")

IF 常見錯誤(#VALUE!、#NAME!、#REF!)

  • #VALUE!:當邏輯運算式的結果是不支援的資料類型時,就會顯示#VALUE!。
  • #NAME!:通常是由於輸入了錯誤的語法,或者引用了錯誤的儲存格,導致IF函數無法正常運作
  • #REF!:原本參照的儲存格被刪除或異常。

IF 溫馨提醒

  • IF 函數運算是由左到右執行測試,而非從最裡面的括號先開始運算。
  • 條件要設定「A且B」或「A或B」時,建議使用AND/OR函數;若顯示結果有分區間(如優/甲/乙/丙/待加強)則使用 IF 巢狀結構或IFS。
  • 使用IF巢狀結構時,最外層放置條件最寬鬆的IF函數,越往內條件越嚴格(如:第一層分數大於60、第二層分數大於70、第三層分數大於80……)
  • 使用IFS時,最左邊放最嚴格的條件,越往右邊條件越寬鬆。

延伸閱讀:IF 系列函數總整理

  • IF 函數:用於設定某個條件,滿足該條件時回傳 A 值,不滿足時則回傳 B 值。
  • IFS 函數:用於設定分段條件,每個條件都會回傳一種值
  • IFERROR 函數:可以自訂回傳值取代所有錯誤。
  • IFNA 函數:可以自訂回傳值取代 #NA錯誤。


資料來源

12 則留言

  1. 您好
    真的很謝謝您願意免費分享這樣的教學內容!
    請教以下這段教學內容後面解說語法的部分是否有誤?

    =IF(C3>=60,IF(C3>=70,IF(C3>=80,IF(C3>=90,”優”,”甲”),”乙”),”丙”),”待加強”)//如果C3大於等於60的話就再去檢查D3是否大於等於60,否則顯示X

  2. =IF(AND(K2087,L2087,M2087,N2087,O2087,P2087,Q2087,R2087,S2087,T2087,U2087,V2087,W2087,X2087,Y2087,Z2087,AA2087,AB2087,AC2087,AD2087=VALUE(TRIM(CLEAN(J2087)))), “OK”, “NG”)
    請問哪裡有錯誤,前面無法抓到錯誤(求解)

    • Hi~
      錯誤應該是出在AND函數上喔。
      AND函數每一個引數都要是一個BOOLEAN(TRUE或是FALSE),所以我們在AND函數中的每個引數都應該放進一個條件判斷式。

      用這個例子來修改就是:
      =IF(AND(K2087,L2087,M2087,N2087,O2087,P2087,Q2087,R2087,S2087,T2087,U2087,V2087,W2087,X2087,Y2087,Z2087,AA2087,AB2087,AC2087,AD2087=VALUE(TRIM(CLEAN(J2087)))), “OK”, “NG”)
      變成:
      =IF(AND(K2087=VALUE(TRIM(CLEAN(J2087))), L2087=VALUE(TRIM(CLEAN(J2087))), M2087=VALUE(TRIM(CLEAN(J2087))), N2087=VALUE(TRIM(CLEAN(J2087))), O2087=VALUE(TRIM(CLEAN(J2087))), P2087=VALUE(TRIM(CLEAN(J2087))), Q2087=VALUE(TRIM(CLEAN(J2087))), R2087=VALUE(TRIM(CLEAN(J2087))), S2087=VALUE(TRIM(CLEAN(J2087))), T2087=VALUE(TRIM(CLEAN(J2087))), U2087=VALUE(TRIM(CLEAN(J2087))), V2087=VALUE(TRIM(CLEAN(J2087))), W2087=VALUE(TRIM(CLEAN(J2087))), X2087=VALUE(TRIM(CLEAN(J2087))), Y2087=VALUE(TRIM(CLEAN(J2087))), Z2087=VALUE(TRIM(CLEAN(J2087))), AA2087=VALUE(TRIM(CLEAN(J2087))), AB2087=VALUE(TRIM(CLEAN(J2087))), AC2087=VALUE(TRIM(CLEAN(J2087))), AD2087=VALUE(TRIM(CLEAN(J2087)))), “OK”, “NG”)

      簡單來說,每個2087都要過一次判斷式,讓值變成BOOLEAN,而當每一個判斷結果都是TRUE,最後才會顯示OK。

      BTW,這個公式可能有點長,遇到這種又臭又長的公式我都會叫ChatGPT幫我簡化,以下是簡化結果,供你參考XD
      =IF(SUMPRODUCT(–(K2087:AD2087=VALUE(TRIM(CLEAN(J2087)))))=20, “OK”, “NG”)

      希望有幫助到你~

  3. 您好,文中(如下)是不是有誤?

    數字類型(不等於的符號為):

    如果C3大於60:=IF(C3>=60,……)
    如果C3大於等於60:=IF(C360,……)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

點擊打開目錄