Menu

Excel IF 函数嵌套:多个 IF 条件的写法和示例

=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","F"))) 把一个 IF 放进另一个 IF 中,在两个以上的结果之间选择。了解嵌套 IF 的执行顺序、为什么条件的顺序很重要,以及什么时候用 IFS 或查找表更好。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

嵌套 IF 就是在一个 IF 里面再放一个 IF,用于可能的结果多于两个的情况。=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","F"))) 对 90 分及以上给 A,80 到 89 分给 B,70 到 79 分给 C,70 分以下给 F。

根据分数评定等级
C2
ABC
1StudentScoreGrade
2Ana94A
3Ben81B
4Chloe70C
5Dan65F
6Eve88B
7Finn90A
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

点击 C2,看看编辑栏:三个 IF 函数,末尾三个右括号。把 B5 中 Dan 的分数改成 75,他的等级就从 F 变成 C。

嵌套 IF 的执行顺序

Excel 从头读取公式,遇到第一个为 TRUE 的判断就停止:

=IF(B2>=90, "A",
   IF(B2>=80, "B",
      IF(B2>=70, "C",
         "F")))
  1. 分数是否大于或等于 90?是则为 A,其余的都不再检查。
  2. 否则,是否大于或等于 80?是则为 B。这个判断不需要写“并且低于 90”,因为 90 分及以上的分数根本不会走到这里。
  3. 否则,是否大于或等于 70?是则为 C。
  4. 否则为 F,也就是最后一个 IF 的 value_if_false。

每个内层 IF 都位于前一个 IF 的 value_if_false 位置上。Excel 最多允许 64 层,但超过四五层的公式就很难用肉眼检查了。Excel 允许在公式中换行,所以你可以在编辑栏中把长公式排成上面这样:在每个 IF 前面按 Alt+Enter(Windows)或 Control+Option+Return(Mac)。

为什么条件的顺序很重要

因为 Excel 在第一个为 TRUE 的判断处就停止,所以使用 >= 时,门槛必须从高到低排列。D 列用相反的顺序写了同样的三个判断:

同样的判断,错误的顺序
D2
ABCD
1StudentScoreRight orderWrong order
2Ana94AC
3Ben81BC
4Chloe70CC
5Dan65FF
6Eve88BC
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

在 D 列中,所有 70 分及以上的人都得到 C:94 分通过了第一个判断 B2>=70,B 和 A 的判断永远不会被执行到。如果你更喜欢从最低的区间开始,就把运算符反过来:=IF(B2<70,"F",IF(B2<80,"C",IF(B2<90,"B","A"))) 得到的等级与 C 列相同。

用嵌套 IF 判断文本

判断条件也可以比较文本。这里的运费取决于地区,所有没有列出的地区都得到最后一个值:

按地区收取运费
C2
ABC
1OrderRegionFee
21001North$5.00
31002South$7.00
41003West$9.00
51004East$6.00
61005Islands$9.00
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

West 和 Islands 不符合三个判断中的任何一个,所以得到最后的值 $9.00。像这里这样,每个判断都是把同一个单元格与一个固定值比较时,SWITCH 可以把每个地区只写一次,表达同样的规则:=SWITCH(B2,"North",5,"South",7,"East",6,9)。见 SWITCH 页面。

嵌套 IF 搭配 AND

当某个区间取决于两个单元格时,嵌套 IF 的各层可以结合 AND 或 OR 使用。销售额达到 2,000 且至少工作 3 年的销售员得到 10%,其他销售额超过 2,000 的人得到 5%,其余的人没有提成:

提成比例
D2
ABCD
1RepSalesYearsRate
2Ana2400410%
3Ben210015%
4Chloe150060%
5Dan3000310%
6Eve90020%
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

Ana 和 Dan 符合 10% 的条件;Ben 销售额够了,但年限不够,得到 5%;Chloe 和 Eve 得到 0%。这里顺序同样重要:更严格的判断要放在前面。

IFS:不用嵌套也能做到

在 Excel 2019、Excel 2021 和 Microsoft 365 中,IFS 以“判断和结果”成对的方式接收参数,没有内层 IF,只有一个右括号。把 TRUE 作为最后一个判断,就表示“其他所有情况”:

=IFS(B2>=90,"A",B2>=80,"B",B2>=70,"C",TRUE,"F")

它按同样的顺序读取条件,遇到第一个为 TRUE 的条件就停止,所以上面关于顺序的规则仍然适用。IFS 页面 详细介绍了它,包括没有任何判断匹配时返回的 #N/A。Excel 2016 及更早版本没有 IFS,使用它的文件在这些版本中会显示 #NAME?。

练习:三档提成

提成
C2
ABC
1RepSalesCommission
2Ana$6,200
3Ben$2,400
4Chloe$600
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中计算提成:B2 中的销售额达到 5000 时按 10% 计算,达到 1000 时按 5% 计算,否则为 0。公式向下填充到 C4。

用查找表代替多个 IF

当区间是数字并且多于三四个时,把门槛放在一个小表格中查找。表格按门槛从低到高排序,近似匹配(最后一个参数为 TRUE)会返回不高于该分数的最大门槛所在的行:

根据区间表评定等级
C2
ABCDEF
1StudentScoreGradeMin scoreGrade
2Ana94A0F
3Ben81B70C
4Chloe70C80B
5Dan65F90A
6Eve88B
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

结果与本页开头的嵌套 IF 一致。要把 B 档改为 85 分,只需把 E4 改成 85:不用修改任何公式,所有等级都会更新。用 XLOOKUP 写同样的查找是 =XLOOKUP(B2,$E$2:$E$5,$F$2:$F$5,,-1),其中 -1 表示“精确匹配或下一个较小的值”;这样表格就不需要排序了。

动手试试:区间表已经准备好了,请写出查找公式。

用 VLOOKUP 评定等级
C2
ABCDEF
1StudentScoreGradeMin scoreGrade
2Ana860F
370C
480B
590A
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中根据 E2:F5 中的区间表,返回 B2 中分数对应的等级。

常见问题

怎样在 Excel 中写多个 IF 条件?

把下一个 IF 放在上一个 IF 的 value_if_false 参数中:=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","F")))。Excel 从第一个条件开始依次判断,遇到第一个为 TRUE 的条件就停止。

Excel 中 IF 函数最多可以嵌套几层?

Excel 2007 及更高版本中最多 64 层。远在达到这个上限之前,公式就已经难以阅读和检查了;超过三四个区间时,使用近似匹配的 VLOOKUP 或 XLOOKUP 配合查找表更容易维护。

我的嵌套 IF 为什么返回了错误的结果?

通常是因为条件的顺序不对。使用 >= 判断时,要从最高的门槛开始:如果 B2>=70 放在最前面,95 分就会停在那里,得到 70 分区间的结果。

在 Excel 中可以用什么代替嵌套 IF?

Excel 2019 及更高版本中可以用 IFS(=IFS(B2>=90,"A",B2>=80,"B",TRUE,"F"));把一个值与若干固定值比较时用 SWITCH;数值区间则用查找表配合 =VLOOKUP(B2,$E$2:$F$5,2,TRUE)。

Coddy 编程语言插图

和 Coddy 一起学编程

开始