IF 函數 – 巢狀公式及避免易犯的錯誤

套用到
Microsoft 365 Excel Mac 版 Microsoft 365 Excel Excel 2024 Mac 版 Excel 2024 Excel 2021 Mac 版 Excel 2021 Excel 2019 Excel 2016 Excel Web 應用程式 Windows Phone 版 Excel 10

IF 函數可讓您測試條件並傳回 True 或 False 的結果,藉以在值與預期值之間進行邏輯比較。

  • =IF(項目為 True,則執行某項目,反之則執行其他項目)

因此,IF 陳述式可以有兩種結果。 第一個結果是比較為 True,第二個結果是比較為 False。

IF 陳述式極度強固,並且形成許多試算表模型的基礎,但它們也是許多試算表問題的根本原因。 在理想的情況下,IF 陳述式應可套用至最基本的情況,例如男士/女士、是/否/也許 (這些只是其中幾個例子),但有時您可能需評估要求將超過 3 個 IF 函數巢狀內嵌* 在一起的較複雜分析藍本。

* 「嵌套」是指將多個函數連接在一個公式中的做法。

技術詳細資料

使用其中一個邏輯函數,也就是 IF 函數,在條件符合時傳回一個值,並在條件不符合時傳回另一個值。

語法

IF(logical_test, value_if_true, [value_if_false])

例如:

  • =IF (A2>B2,“超出預算”,“OK”)
  • =IF(A2=B2,B4-A4,"")
引數名稱 描述
logical_test
(必填)
您想要測試的條件。
value_if_true
(必填)
如果 logical_test 的結果為 TRUE,您要傳回的值。
value_if_false
(選擇性)
如果 logical_test 的結果為 FALSE,您要傳回的值。

註解

雖然 Excel 允許您巢狀多達 64 個不同的 IF 函數,但完全不建議這樣做。 為什麼?

  • 多個 IF 陳述式需要進行縝密且大量的思考才能正確建構,並確認其邏輯在各種情況下皆可正確計算。 如果您沒有 100% 準確地巢狀運算公式,那麼它可能在 75% 的情況下正常運作,但在 25% 的情況下會傳回非預期的結果。 不幸的是,您能重現那 25% 情況的機會相當渺茫。
  • 多個 IF 陳述式可能會變得極度難以維護,尤其是當您之後才回來並試著想出您 (或可能是其他人,更糟的話) 當時想要怎麼做。

如果您發現自己的 IF 陳述似乎一直在增長且看不到盡頭,那麼是時候放下滑鼠並重新考慮您的策略了。

讓我們看看如何使用多個 IF 正確建立複雜的巢狀 IF 陳述式,以及何時該辨識是時候使用 Excel 武器庫中的另一個工具了。

範例

下列是相對標準巢狀 IF 陳述式,將學生的測驗分數轉換為同等的字母成績。

複雜巢狀 IF 陳述式 - E2 中的公式是 =IF (B2>97,A+,IF (B2>93,A,IF (B2>89,A-,IF (B2>87,B+,IF (B2>83,B,IF (B2>79,B-,IF (B2>77,C+,IF (B2>73,C,IF (B2>69,C-,IF (B2>57,D+,IF (B2>53,D,IF (B2>49,D-,F) ) ) ) ) ) ) ) ) ) ) )

  • =IF (D2>89,“A”,IF (D2>79,“B”,IF (D2>69,“C”,IF (D2>59,“D”,“F”) ) ) )
    此複雜巢狀 IF 陳述式遵循易懂的邏輯:
  1. 如果測驗分數 (在儲存格 D2 中) 大於 89,學生則會得到 A
  2. 如果測驗分數大於 79,學生則會得到 B
  3. 如果測驗分數大於 69,學生則會得到 C
  4. 如果測驗分數大於 59,學生則會得到 D
  5. 如果是其他的分數,學生則會得到 F

這個特殊的例子相對安全,因為考試成績和字母成績之間的相關性不太可能改變,因此不需要太多維護。 但這裡有一個想法——如果你需要在 A+、A 和 A- (等之間劃分成績怎麼辦) ? 現在您四個條件的 IF 陳述式就需要重新撰寫成具有 12 個條件的陳述式! 以下是您的公式現在的樣子:

  • =IF (B2>97,“A+”,IF (B2>93,“A”,IF (B2>89,“A-”,IF (B2>87,“B+”,IF (B2>83,“B”,IF (B2>79,“B-”, IF (B2>77,“C+”,IF (B2>73,“C”,IF (B2>69,“C-”,IF (B2>57,“D+”,IF (B2>53,“D”,IF (B2>49,“D-”,“F”) ) ) ) ) ) ) ) ) ) ) )

它在功能上仍然準確並且會按預期工作,但需要很長時間來編寫,並且需要更長的時間來測試以確保它執行您想要的操作。 另一個明顯的問題是您必須手動輸入分數和等效字母等級。 您不小心打錯字的機率有多大? 更別提您需要執行此動作高達 64 次,再加上更複雜的條件! 當然,這是可能的,但您真的想讓自己遭受這種很難發現的努力和可能的錯誤嗎?

秘訣

Excel 中的每項函數都需要有左右括號 ()。 Excel 會在您編輯公式的不同部分時,嘗試協助您釐清公式的去向。 例如,如果您要編輯上述公式,當您將游標移過每個結束括弧「) 」時,其對應的左括弧將變成相同的顏色。 當您嘗試判斷是否有足夠的相符括弧時,這在複雜的巢狀公式中特別有用。

其他範例

下列是非常常見的範例,根據達成的營收等級計算銷售佣金。

儲存格 D9 中的公式是:IF (C9 15000,20%,IF (C9 12500,17.5%,IF (C9>10000,15%,IF (C9>7500,12.5%,IF (C9>5000,10%,0) ) ) ) ) >>

  • =IF (C9 15000,20%,IF (C9 12500,17.5%,IF (C9>10000,15%,IF (C9>7500,12.5%,IF (C9>5000,10%,0) ) ) ) ) >>

此公式表示 IF(C9 大於 15,000 則傳回 20%, IF(C9 大於 12,500 則傳回 17.5%, 依此類推...

雖然它與前面的 Grades 示例非常相似,但這個公式是一個很好的例子,說明維護大型 IF 報表是多麼困難——如果您的組織決定增加新的薪酬水平,甚至可能更改現有的美元或百分比值,您需要做什麼? 你會有很多工作要做!

秘訣

您可以在資料編輯列中插入分行符號,讓冗長的公式更容易閱讀。 只要在您想要換行的文字前面按 ALT+ENTER 即可。

下列範例是邏輯順序出錯的佣金案例:

D9 中的公式亂序為 =IF (C9>5000,10%,IF (C9>7500,12.5%,IF (C9>10000,15%,IF (C9>12500,17.5%,IF (C9>15000,20%,0) ) ) ) ) 你看出哪裡出錯嗎? 請將「營收」比較的順序,與先前的範例進行比較。 這個範例的方向是? 沒錯,它是從自下而上 (5,000 美元到 15,000 美元) ,而不是相反。 為何這很重要? 這是一件大事,因為公式無法通過任何超過 5,000 美元值的第一次評估。 假設您有 $12,500 美元的收入,IF 陳述式會因為大於 $5,000 而回報 10%,並就此止步。 這可能是非常成問題的,因為在許多情況下,這些類型的錯誤在產生負面影響之前會被忽視。 因此,在了解複雜巢狀 IF 陳述式有許多嚴重的陷阱之後,您可以做些什麼? 在大多數的情況下,您可以使用 VLOOKUP 函數來取代以 IF 函數建立複雜公式的做法。 若要使用 VLOOKUP,首先您需要建立一個參照表:

儲存格 D2 中的公式為 =VLOOKUP(C2,C5:D17,2,TRUE)

  • =VLOOKUP(C2,C5:D17,2,TRUE)

此公式表示要在 C5:C17 的範圍中尋找 C2 中的值。 如果找到該值,則會傳回 D 欄同一列中的對應值。

儲存格 C9 中的公式為 =VLOOKUP(B9,B2:C6,2,TRUE)

  • =VLOOKUP(B9,B2:C6,2,TRUE)

同樣地,此公式會在 B2:B22 的範圍中尋找儲存格 B9 中的值。 如果找到該值,則會傳回 C 欄同一列中的對應值。

注意

這兩個 VLOOKUP 都在公式結尾使用 TRUE 引數,這表示我們要它們尋找大約符合的項目。 也就是說,它會在查閱表格中比對確切的值,以及所有落在它們之間的值。 在此情況下,查閱表格須依遞增順序進行排序 (由最小到最大)。

這裡有更詳細的介紹 VLOOKUP,但這肯定比 12 層複雜巢狀 IF 陳述式簡單得多! 此外,它還有一些較不明顯的好處:

  • VLOOKUP 參照表格公開且容易查看。
  • 您可以輕鬆更新表格的值,而且如果條件變更,您都無須自行修改公式。
  • 如果您不想讓別人看到或干擾您的參照表格,只需將其放在另一個工作表上即可。

您知道嗎?

現在已經有 IFS 函數,它可以透過單一函數取代多個巢狀 IF 陳述式。 因此,與其使用一開始那個具有 4 個巢狀 IF 陳述式的成績範例:

  • =IF (D2>89,“A”,IF (D2>79,“B”,IF (D2>69,“C”,IF (D2>59,“D”,“F”) ) ) )

您可以改為使用單一 IFS 函數將它加以簡化:

  • =IFS (D2>89,“A”,D2>79,“B”,D2>69,“C”,D2>59,“D”,TRUE,“F”)

IFS 函數很棒,因為您不需要擔心所有這些 IF 語句和括號。

注意

此功能僅適用於 Microsoft 365 訂閱。 如果您是 Microsoft 365 訂閱者, 請確定您有最新版的 Office

需要更多協助嗎?

您隨時都可以詢問 Excel 技術社群 中的專家,或在 社群中取得支援。