Menu

Excel SWITCH 函数:语法、默认值和示例

=SWITCH(B2,"N","North","S","South","Unknown") 依次把 B2 和每个值比较,返回第一个完全匹配的值所对应的结果,都不匹配时返回 Unknown。本文讲解 SWITCH 的语法、默认值、SWITCH(TRUE,...) 写法,以及什么时候改用 IFS 或嵌套 IF。

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

=SWITCH(B2,"N","North","S","South","E","East","Unknown") 依次把 B2 和“N”“S”“E”比较,返回第一个完全匹配的值所对应的名称。B2 和它们都不匹配时,返回最后一个参数 Unknown。

把地区代码转换成名称
C2
ABC
1StoreCodeRegion
2101NNorth
3102SSouth
4103WUnknown
5104EEast
6105nNorth
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

点击 C2 查看公式。103 号店的代码是 W,不在列表中,所以得到 Unknown。105 号店是小写的 n,仍然得到 North:SWITCH 匹配文本时不区分大小写。把 B4 改成 S,地区也会更新。

SWITCH 的语法

=SWITCH(expression, value1, result1, [value2, result2], ..., [default])
  • expression 只计算一次:可以是一个单元格,也可以是 WEEKDAY(A2) 或 MONTH(A2) 这样的公式。
  • 接下来是成对的值和结果:expression 等于这个值时,返回对应的结果。最多可以有 126 对。
  • default 是可选的:最后一对之后多出的一个参数。SWITCH 知道它是默认值,因为它没有配对的参数。
  • 匹配必须完全相同。SWITCH 本身不能判断“大于”(见下文的 SWITCH(TRUE))。

SWITCH 需要 Excel 2019 或更高版本,或者 Microsoft 365。在永久授权版 Excel 2016 及更早的版本中,含 SWITCH 的公式会显示 #NAME?。Google 表格也有 SWITCH。

默认值,以及没有默认值时的 #N/A

没有默认值时,什么都不匹配的值会得到 #N/A。下面把 WEEKDAY 返回的星期数字(1 表示星期日,7 表示星期六)转换成标签;C 列没有默认值,D 列的默认值是“Weekday”:

周末还是工作日
D2
ABCD
1DateDay numberNo defaultWith default
22026-03-147SaturdaySaturday
32026-03-151SundaySunday
42026-03-162#N/AWeekday
52026-03-173#N/AWeekday
62026-03-217SaturdaySaturday
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

2026 年 3 月 14 日和 21 日是星期六,3 月 15 日是星期日,所以两列都给出了名称。星期一和星期二既不是 1 也不是 7:C 列显示 #N/A,D 列显示 Weekday。D 列还说明表达式可以是一个公式:WEEKDAY 只运行一次,SWITCH 再把它的结果和每个值比较。

用 SWITCH(TRUE, ...) 判断范围

SWITCH 只检查是否相等,但表达式可以是 TRUE。这时每个值都是一个比较,SWITCH 返回第一个等于 TRUE 的比较所对应的结果。这样它就和 IFS 一样工作,并且末尾还有默认值:

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

比较是按顺序读取的,所以最高的界限要放在最前面,这和嵌套 IF 以及 IFS 的规则一样。最后的“F”没有配对,所以它是低于 70 分的所有成绩的默认值。IFS 写出同样的规则也一样清楚;唯一的区别是 TRUE 的位置:在 SWITCH 中写在开头一次,在 IFS 中作为最后一个测试。

把数字映射成名称

一个常见的用法是把代码数字变成文字,比如把名次变成奖牌:

名次转换成奖牌
C2
ABC
1RunnerRankMedal
2Ana2Silver
3Ben1Gold
4Chloe4
5Dan3Bronze
6Eve7
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

Chloe 和 Eve 没有进入前三名,所以得到默认值,即空文本。如果代码是 1、2、3 这样没有间断的数字,CHOOSE 写起来更短:=CHOOSE(B2,"Gold","Silver","Bronze"),但它没有默认值,对 4 及以上的数字会返回 #VALUE!。

练习:状态代码

发票状态
C2
ABC
1InvoiceCodeStatus
2INV-01P
3INV-02U
4INV-03X
5INV-04P
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中用 SWITCH 把 B2 中的代码变成文字:P 是“Paid”,U 是“Unpaid”,其他代码都是“Check”。公式会向下填充到 C5。

SWITCH、IFS 和嵌套 IF 的对比

三者都从多个结果中返回一个;区别在于它们检查什么。

SWITCHIFS嵌套 IF
检查内容一个表达式是否相等每一对可以是任意条件每一层可以是任意条件
默认值最后一个参数,可选最后一对 TRUE最后一个 IF 的假值
不匹配且没有默认值#N/A#N/AFALSE(最后一个 IF 没有 value_if_false 时)
重复写单元格否:B2 只写一次是:B2="N"、B2="S"...是
Excel 2016 及更早版本#NAME?#NAME?可以用

把一个单元格或一个公式和一列固定的值(代码、星期数字、月份)比较时,用 SWITCH;它最短,而且表达式只运行一次。每个测试是不同的比较或读取不同的单元格时,用 IFS。文件必须能在 Excel 2016 或更早版本中打开时,用嵌套 IF。如果代码列表很长或经常变化,就把它放进一张两列的表中,改用 XLOOKUP 查找,这样新增一个代码只需添加一行,而不用修改每个公式。

常见问题

Excel 中的 SWITCH 函数是做什么的?

它把一个表达式和一列值比较,返回第一个完全匹配的值所对应的结果。=SWITCH(B2,1,"Gold",2,"Silver",3,"Bronze","") 把名次变成奖牌名称,其他名次则返回空文本。

SWITCH 为什么返回 #N/A?

表达式和所有值都不匹配,而且没有默认值。在最后一对参数后面再加一个参数,比如 "Other",SWITCH 就会返回它,而不是 #N/A。

SWITCH 能判断“大于”这样的范围吗?

不能直接判断,因为它只检查是否相等。把 TRUE 作为表达式,把比较作为值:=SWITCH(TRUE,B2>=90,"A",B2>=80,"B","F") 返回第一个结果为 TRUE 的比较所对应的结果。

Excel 2016 中有 SWITCH 函数吗?

只有 Microsoft 365 版本的 Excel 2016 才有。Excel 2019、Excel 2021、Excel 2024 和 Microsoft 365 中都有 SWITCH;永久授权版 Excel 2016 及更早的版本会显示 #NAME?,这些版本中请用嵌套 IF 或 CHOOSE。

Coddy 编程语言插图

和 Coddy 一起学编程

开始