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(D2>89,"A",IF(D2>79,"B",IF(D2>69,"C",IF(D2>59,"D","F"))))
此複雜巢狀 IF 陳述式遵循易懂的邏輯:
-
如果測驗分數 (在儲存格 D2 中) 大於 89,學生則會得到 A
-
如果測驗分數大於 79,學生則會得到 B
-
如果測驗分數大於 69,學生則會得到 C
-
如果測驗分數大於 59,學生則會得到 D
-
如果是其他的分數,學生則會得到 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 會嘗試為公式的不同部分著色,以協助您找出要移至何處。 例如,如果您要編輯上述公式,當您將游標移過每個結尾括弧「) 」時,其對應的左括弧會變成相同的色彩。 當您嘗試找出是否有足夠的相符括弧時,這在複雜的巢狀公式中特別有用。
其他範例
下列是非常常見的範例,根據達成的營收等級計算銷售佣金。
-
=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 即可。
下列範例是邏輯順序出錯的佣金案例:
可以查看發生什麼問題嗎? 請將「營收」比較的順序,與先前的範例進行比較。 這個範例的方向是? 沒錯,從下往上 ($5,000 到 $15,000) ,而不是另一種方式。 為何這很重要? 這是很重要的,因為公式無法通過超過 $5,000 的任何值的第一個評估。 假設您的營收為 $12,500 美元–IF 語句會傳回 10%,因為它大於 $5,000,而且會停止。 這可能是非常嚴重的問題,因為在許多情況下,這些類型的錯誤在造成負面影響之前不會被注意。 因此,在了解複雜巢狀 IF 陳述式有許多嚴重的陷阱之後,您可以做些什麼? 在大多數的情況下,您可以使用 VLOOKUP 函數來取代以 IF 函數建立複雜公式的做法。 若要使用 VLOOKUP,首先您需要建立一個參照表:
-
=VLOOKUP(C2,C5:D17,2,TRUE)
此公式表示要在 C5:C17 的範圍中尋找 C2 中的值。 如果找到該值,則會傳回 D 欄同一列中的對應值。
-
=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 函數 (依類別)