Excel SWITCH 函数:告别层层嵌套的 IF
- 2026-11-09 22:19:38
拿到一列状态码 1、2、3、4、5,要翻译成“待付款、已付款、已发货、已完成、已取消”——这种活儿你是不是第一反应就是 IF?
用 IF 没错,但得套 5 层括号,改一处错一处。今天介绍一个更清爽的函数:SWITCH。一个函数,一行搞定,Excel 2019 及以上、WPS 都能用。
一、SWITCH 长什么样
=SWITCH(要判断的值, 值1, 结果1, 值2, 结果2, …, 默认结果)
用大白话读:拿第一个参数,去和后面成对的“值”逐个比对,对上了就返回对应的“结果”;全都没对上,就返回最后那个“默认结果”。
结构和“查字典”一样:一个词,对上一条就给出释义,查不到就写“暂无”。
二、原始数据
手头数据长这样(文末可下载练习文件):
注意 D006 的状态码是 9——故意放一个不存在的值,看看会发生什么。
三、写公式(3 步)
第 1 步:在 C2 输入
=SWITCH(B2,1,"待付款",2,"已付款",3,"已发货",4,"已完成",5,"已取消","未知")
第 2 步:回车,C2 立刻显示“待付款”。
第 3 步:双击 C2 右下角的小方块(填充柄),公式自动填充到全列。

可以看到:1 → 待付款,3 → 已发货……逐个翻译成功;D006 的状态码是 9,列表里没有,于是返回了最后的默认结果“未知”——这就是 SWITCH 的兜底机制。
想验证函数是“活的”?把任意一行对应的状态码改成 4,结果会立刻变成“已完成”。文末的 xlsx 文件里就是真实公式,打开即可试。
四、和 IF 比一比
同样的效果,用 IF 得这么写:
=IF(B2=1,"待付款",IF(B2=2,"已付款",IF(B2=3,"已发货",IF(B2=4,"已完成",IF(B2=5,"已取消","未知")))))
5 层嵌套,5 个右括号,少一个就报错。而 SWITCH 平铺直叙,判断一次、逐对翻译,可读性和修改成本都赢。
一句话总结选择标准:
• 同一个值要对应多种结果 → SWITCH• 每个 IF 的判断条件都不一样(比如 B2>90、C2="是") → 还是 IF
五、3 个容易踩的坑
1. 默认结果别省略。不写的话,遇到没有匹配的值会返回 #N/A 错误,而不是留空。
2. 只能“精确相等”匹配。SWITCH 判断的是“值是否等于某个具体值”,不支持区间(比如“分数≥90 记优秀”),这类需求请继续用 IF 或 IFS。
3. 成对书写,别漏结果。“值1, 结果1” 是一组,漏写半个就整体报错。