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

Applies To
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel 2024 Excel 2024 for Mac Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2016 Excel Web App Excel for Windows Phone 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 技術社群 中的專家,或在 社群中取得支援。