IF

IF 函數會傳回兩個值中的一個,視指定的表示式是評估為布林值 TRUE 還是 FALSE。

IF(條件表示式, TRUE 條件, FALSE 條件)

條件表示式: 邏輯表示式。 條件表示式可以包含任何內容,只要表示式可以評估為布林值。如果將表示式評估為數值,則會將 0 視同為 FALSE,而其他任何數值將視為 TRUE。

TRUE 條件: 條件表示式為 TRUE 時所傳回的數值。 TRUE 條件可以包含任何值。若省略 TRUE 條件,(有逗號,但無值)且條件表示式評估為 TRUE,則 IF 會傳回 0。

FALSE 條件: 可留空的引數,指定若條件表示式為 FALSE 時所傳回的數值。 FALSE 條件可以包含任何值。若省略 FALSE 條件,(有逗號,但無值)且條件表示式評估為 FALSE,則 IF 會傳回 0。如果完全省略 FALSE 條件TRUE 條件後無逗號)且條件表示式評估為 FALSE,則 IF 會傳回 FALSE。

附註

  • TRUE 條件FALSE 條件之一或兩者都可以包含其他 IF 函數(通常稱為巢狀 IF 函數)。

使用 IF 進行簡單比較

下表顯示追蹤學生成績的簡單方法。

A

B

C

D

E

F

1

學生

考試分數 1

考試分數 2

期末分數

等第

最終結果

2

1

56

59

59

F

不及格

3

2

75

84

84

B

及格

4

3

100

93

100

A

及格

你可以使用這些資料執行簡單的 IF 比較。以下是使用 IF 函數的幾種方式:

根據條件傳回文字值:

「公式編輯器」顯示公式 =IF(D2≥60,"及格","不及格"))。

這個公式中使用了以下引數:

  • 條件表示式:D2≥60,檢查學生的分數是否大於或等於 60。

  • TRUE 條件:"及格",如果輸入格 D2 中的字串大於或等於 60,就會傳回此值。

  • FALSE 條件:"不及格",如果輸入格 D2 中的字串小於 60,就會傳回此值。

如果學生 1 的考試分數為 60 分或以上,此公式會傳回「及格」結果,反之則傳回「不及格」。

根據條件傳回數值:

「公式編輯器」顯示公式 =IF(C2>B2, C2, B2)。

這個公式中使用了以下引數:

  • 條件表示式:C2>B2。這會檢查哪個考試分數較高。

  • TRUE 條件:C2。如果 C2 大於 B2,就會傳回 C2 中的考試分數。

  • TRUE 條件:B2。如果 C2 小於 B2,就會傳回 B2 中的考試分數。

此公式以兩個考試分數中較高者計算期末分數,且只要更改輸入格參照以符合正確學生的分數,就能輕鬆修改用於表格中任何學生。

使用巢狀 IF 函數測試更多條件:

「公式編輯器」顯示公式 =IF(B2≥60, "及格", IF(C2≥60, "及格","不及格"))。

如果至少有一位學生的考試分數為 60 或以上,上方公式便會指派「及格」結果。

「公式編輯器」顯示公式 =IF(D2<60,"F", IF(D2<70,"D", IF(D2<80,"C", IF(D2<90,"B","A"))))。

上方公式會根據學生的期末分數指派等第。

【注意】使用巢狀 IF 函數時,比較順序很重要,因為公式會在遇到第一個 TRUE 陳述式時停止。例如,若你想為等第公式加上新條件,指定如果學生的分數為 0 則傳回「未應試」,你需要加入為第一個條件。如果加入為最後一個條件,即使分數為 0 也會傳回「F」,因為系統已經先評估為小於 60。也因如此,「A」等第就不需要獨立的條件表示式,如果學生的分數不是「B」,也不會是其他任何等第,而一定是「A」。

試試看

若要查看 Numbers 試算表中使用的 IF 函數,請用「成績簿」範本建立新的試算表。移除「全班概覽」表格中的名稱,查看「期末成績」直欄中的值有何變化。探索「期末成績」直欄中使用的函數。

搭配其他函數使用 IF

使用下列公式搭配 ISBLANK,判斷輸入格是否空白。

「公式編輯器」顯示公式 =IF(ISBLANK(A2),"是","否")。

這個公式中使用了以下引數:

  • 條件表示式:ISBLANK(A2) 會檢查輸入格 A2 是否空白。

  • TRUE 條件:"是",如果 A2 空白,便會傳回此字串。

  • FALSE 條件:"否",如果 A2 非空白,便會傳回此字串。

如需用於更複雜的測試,你也可以結合 IF 和 ANDORNOT

使用 IFS 進行更複雜的計算

IFS 函數可用於估算一連串的表示式,並根據判斷為 TRUE 的第一個條件傳回一個值,取代多個巢狀 IF 陳述式。

「公式編輯器」顯示公式 =IFS(D2<60,"F",D2<70,"D",D2<80,"C",D2<90,"B",D2≥90,"A")。

其他範例

如果輸入格 A5 包含大於或等於 0 的數,或者非數值,則 =IF(A5>=0, "非負數", "負數") 會傳回文字「非負數」。如果輸入格 A5 包含小於 0 的值,則函數會傳回「負數」。

=IF(A5<>0, “非零", "零") 會在 A5 包含不是 0 的數字時傳回文字「非零」。如果輸入格 A5 包含 0,則函數會傳回「零」。

如果輸入格 B4 和 B5 兩者都包含數字,則 =IF(IFERROR(OR(ISEVEN(B4+B5), ISODD(B4+B5)), FALSE), "全是數字", "不全是數字") 會傳回文字「全是數字」;否則會傳回文字「不全是數字」。完成此操作來進行測試,查看兩個輸入格的加總是偶數還是奇數。如果輸入格不是數字,則 EVEN 和 ODD 函數會傳回錯誤,且 IFERROR 函數將傳回 FALSE;否則傳回 TRUE,因為 EVEN 或 ODD 為 TRUE。所以,如果 B4 或 B5 不是數字或布林值,則 IF 敘述句會傳回 FALSE 條件表示式「不全是數字」;否則會傳回 TRUE 條件表示式「全是數字」。

範例:避免發生除數為 0 的錯誤

有時候無法以能夠避免除數為 0 的方式建構表格。然而,若發生除數為 0 的情況,輸入格中的結果會是錯誤值,這通常不是期望的結果。此範例會示範避免此錯誤發生的三種方式。

假設輸入格 D2 和 E2 各包含一個數字。E2 可能會包含 0。你希望 D2 除以 E2,但要避免除數為 0 的錯誤。如果輸入格 E2 等於零,則下列三種方式各會傳回 0;否則皆會傳回 D2/E2 的結果。

=IF(E2=0, 0, D2/E2) 會直接測試輸入格 E2 來查看結果是否為 0。

若發生錯誤,=IFERROR(D2/E2, 0) 會傳回 0。除數為 0 為錯誤。

=IF(ISERROR(D2/E2), 0, D2/E2) 會執行一項邏輯測試來查看 D2/E2 是否為 TRUE。

使用 REGEX 的範例

讓 A1 包含 "marina@example.com"

=IF(A1 = REGEX("([A-Z0-9a-z._%+-]+)@([A-Za-z0-9.-]+\.[A-Za-z]{2,4})"), "Contains e-mail", "No e-mail") 會傳回 "Contains e-mail"。

也請參閱ANDNOTORIFSIFERROR
Morty Proxy This is a proxified and sanitized view of the page, visit original site.
有幫助?
字元限制: 250
最大字元限制為 250。
感謝您的寶貴意見。
Morty Proxy This is a proxified and sanitized view of the page, visit original site.