IF 函數 – 巢狀公式及避免易犯的錯誤
Applies ToExcel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web 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,"超出預算","確定")

  • =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%, 依此類推...

雖然這非常類似先前的「成績」範例,但這個公式卻是一個很好的範例,說明維護大型 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 語句會傳回 10%,因為它大於 $5,000,而且會停止。 這可能是非常嚴重的問題,因為在許多情況下,這些類型的錯誤在造成負面影響之前不會被注意。 因此,在了解複雜巢狀 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購買或試用 Microsoft 365

需要更多協助嗎?

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

相關主題

IFS 函數 (Microsoft 365、Excel 2016 及更新) COUNTIF 函數會根據單一準則 計算值:COUNTIFS 函數會根據多個準則計算數值:SUMIF 函數會根據單一準則加總值:SUMIFS函數會根據多個準則加總值AND 函OR 函VLOOKUP 函數Excel 公式概觀如何避免公式出錯偵測公式中的錯誤邏輯函Excel 函數 (按字母排序)Excel 函數 (依類別)

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。