Menu

Excel IFS 函数:不用嵌套也能判断多个条件

=IFS(B2>=90,"A",B2>=80,"B",B2>=70,"C",TRUE,"F") 按顺序检查每个条件,返回第一个为 TRUE 的条件所对应的值。本文讲解 IFS 的语法、用 TRUE 设置默认值、IFS 为什么返回 #N/A,以及它和嵌套 IF 的对比。

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

=IFS(B2>=90,"A",B2>=80,"B",B2>=70,"C",TRUE,"F") 从第一个到最后一个依次检查条件,返回第一个为 TRUE 的条件所对应的值。它能做嵌套 IF 能做的事,却不用把一个 IF 放进另一个 IF 里。IFS 需要 Excel 2019 或更高版本,或者 Microsoft 365。

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

点击 C2:四组条件和结果,只有一个右括号。把 B4 中 Chloe 的分数改成 69,她的等级就会降到 F。

IFS 语法

=IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2], ...)
  • 参数成对出现:先是一个得出 TRUE 或 FALSE 的条件,然后是它为 TRUE 时要返回的值。
  • Excel 按顺序检查条件,返回第一个为 TRUE 的条件所对应的值。之后的条件不会再检查,所以用 >= 判断时,要把最高的门槛放在最前面。
  • 最多可以有 127 对。
  • 没有单独的“否则”参数。用 TRUE 作为条件的最后一对就能起到这个作用。

如果某个条件缺少对应的值(参数个数为奇数),Excel 会拒绝这个公式,并提示“此函数输入的参数太少”。

用 TRUE 作为默认值,以及没有匹配时的 #N/A

如果没有任何条件为 TRUE,IFS 就返回 #N/A。下面的 C 列没有默认值,遇到两个低分就出错了;D 列以 TRUE,"F" 结尾,把它们接住了:

有默认值与没有默认值
C4
ABCD
1StudentScoreNo defaultTRUE default
2Ana94AA
3Ben81BB
4Dan65#N/AF
5Eve88BB
6Gus52#N/AF
#N/A 要查找的值不在查找范围内。

TRUE 是一个永远成立的条件,所以只有前面的每个条件都为 FALSE 时才会轮到它,而且它必须是最后一对:它后面的内容永远不会被检查。默认值可以是任何值:TRUE,"" 显示空单元格,TRUE,"Check" 给这一行做标记。如果不想设默认值,又不想让 #N/A 露出来,=IFNA(IFS(...),"No grade") 也可以;IFNA 的讲解见 IFERROR 一文。

IFS 判断文本,以及搭配 AND 或 OR

条件就是普通的逻辑表达式,所以可以比较文本,也可以使用 AND 和 OR。这里的配送方式取决于地区和订单金额:

配送方式
D2
ABCD
1OrderRegionTotalDelivery
21001North$120Free
31002North$60Standard
41003South$150Express
51004East$40Post
61005north$300Free
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

订单 1001 是 North 且金额超过 100,所以得到 Free。订单 1002 是 North 但金额不到 100,所以第一个条件不成立,第二个条件 B2="North" 给出 Standard。文本比较不区分大小写,所以写成 north 的 1005 也得到 Free。

如果每个条件都是把同一个单元格和某个固定值比较(B2="N"、B2="S"、B2="E"),用 SWITCH 只需把每个值列一次,写起来更短:=SWITCH(B2,"N","North","S","South","Other")。

练习:配送速度

发货速度
C2
ABC
1OrderDaysSpeed
210013
310021
410037
510042
610055
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中,当 B2 中的天数小于等于 1 时返回 "Express",小于等于 3 时返回 "Standard",否则返回 "Slow"。请使用 IFS。公式会向下填充到 C6。

IFS 与嵌套 IF 对比

下面两个公式对每个分数返回的等级都相同:

=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C","F")))
=IFS(B2>=90,"A",B2>=80,"B",B2>=70,"C",TRUE,"F")
IFS嵌套 IF
括号一对每个 IF 一对
默认值最后一对 TRUE最后一个 IF 的 value_if_false
没有条件匹配时#N/A,除非加上 TRUE最后一个 IF 的 value_if_false(省略时为 FALSE)
上限127 对嵌套 64 个 IF
Excel 2016 及更早版本#NAME?可以使用

如果打开文件的每个人都使用 Excel 2019 或更高版本,就用 IFS;如果文件要发给使用旧版 Excel 的人,就用嵌套 IF。只有两种结果时,普通的 IF 比这两者都简单。对于很多个数值区间(税率档次、运费重量档),两者都不是最好的工具:用带近似匹配的查找表,可以把门槛值放在单元格里,嵌套 IF 一文演示了这种做法。

常见问题

怎样给 IFS 加上“否则”的值?

让最后一个条件为 TRUE,它永远成立:=IFS(B2>=90,"A",B2>=80,"B",TRUE,"F")。前面所有条件都不满足的值都会得到 F。

IFS 为什么返回 #N/A?

没有任何条件为 TRUE,而且末尾没有 TRUE 这一对。=IFS(B2>=90,"A",B2>=80,"B") 对 75 分会返回 #N/A。在末尾加上 TRUE,"F",或者用 IFNA 包住公式。

哪些 Excel 版本有 IFS?

Excel 2019、Excel 2021、Excel 2024 和 Microsoft 365,以及网页版 Excel。在 Excel 2016 及更早版本中,含 IFS 的公式会显示 #NAME?,所以要改用嵌套 IF。Google 表格也有 IFS。

IFS 比嵌套 IF 更好吗?

它更容易读,而且只有一个右括号,但工作方式相同:第一个为 TRUE 的条件胜出。如果文件必须在 Excel 2016 或更早版本中打开,仍然要用嵌套 IF。

Coddy 编程语言插图

和 Coddy 一起学编程

开始