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 (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%, 依此類推...
雖然它與先前的 Grades 範例非常相似,但這個公式很好地說明了維持大型 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 陳述和括號。
需要更多協助嗎?
你隨時可以向 Excel 技術社群 的專家詢問,或在 社群中獲得支援。