Excel条件函数进阶:嵌套IF写了8层改不动?试试IFS和SWITCH,效率直接翻倍
- 2026-09-25 15:12:03
大家好,我是小本本。
上周加班的时候,隔壁工位的小师妹突然"嗷"了一嗓子,把整个办公室都吓了一跳。
我凑过去一看,好家伙——她的Excel公式栏里,一个IF函数套了一层又一层,我数了数,足足8层!光标随便点一下,括号就跟着闪,看得人眼都花了。
"哥,我就想根据销售额算个提成比例,怎么就这么难啊……改一个档位,要翻半天找括号,改完还老是报错。"
我笑了笑,把她那串写了三行都放不下的嵌套IF,换成了一行IFS函数。她瞪大眼睛看了五秒,然后发出了灵魂拷问:"还有这种好东西?我之前怎么不知道!"
说实话,很多人学Excel,IF函数是最早接触的条件函数之一。但一碰到多条件判断,就只会疯狂嵌套IF,结果公式越写越长、越写越乱,到最后自己写的公式,过一个礼拜自己都看不懂。
今天这篇,咱们就来聊聊Excel条件函数的进阶玩法——IFS、SWITCH,以及怎么把条件函数和查找函数组合起来用。学会了这几招,以后再多的条件判断,你都能写得清爽又好懂。
— — —
先回顾:IF函数的局限,你肯定也踩过坑
先快速复习一下基础的IF函数,毕竟这是一切的起点(第5篇我们详细讲过,这里就不展开了)。
IF函数的语法很简单:
=IF(条件, 满足时返回什么, 不满足时返回什么)
比如判断成绩是否及格:
=IF(A1>=60, "及格", "不及格")
一个条件的时候,IF确实好用。但如果条件多了呢?
比如成绩要分四个等级:不及格、及格、良好、优秀。用嵌套IF怎么写?
=IF(A1<60, "不及格", IF(A1<75, "及格", IF(A1<90, "良好", "优秀")))
你看,这才4个等级,就已经套了3层IF了。要是来个个税计算的7级税率呢?那画面太美我不敢想……
嵌套IF的三大痛点,你中了几个?
痛点一:读不懂。 层数一多,打开公式像看迷宫,括号一层套一层,眼睛都看花了。
痛点二:改不动。 想加一个条件、改一个阈值?你得先找到对应那层IF,改完还要检查括号配对,一不小心就多一个或少一个括号,直接#VALUE!报错。
痛点三:有上限。 老版本Excel(2007以前)的IF最多只能嵌套7层,虽然新版本放宽到了64层,但你真的要写64层IF吗?那怕不是对自己的视力有什么误解……
所以今天,咱们就来认识两个"专治多层嵌套"的函数——IFS 和 SWITCH。
— — —
IFS函数:多条件判断的神器,一行顶十行
语法是什么?
IFS可以理解为"多个IF的合体",专门用来处理多条件、多结果的判断场景。
语法非常直观:
=IFS(条件1, 结果1, 条件2, 结果2, 条件3, 结果3, ...)
什么意思呢?就是从左到右依次检查条件:
●如果条件1满足,就返回结果1;
●如果条件1不满足,就检查条件2,满足就返回结果2;
●以此类推,直到找到第一个满足的条件;
●如果全都不满足,就返回#N/A错误。
和嵌套IF的对比:没有对比就没有伤害
咱们还是用成绩等级的例子,看看同样的逻辑,两种写法差多少。
嵌套IF写法(3层嵌套):
=IF(A1<60, "不及格", IF(A1<75, "及格", IF(A1<90, "良好", "优秀")))
IFS写法(一行搞定):
=IFS(A1<60, "不及格", A1<75, "及格", A1<90, "良好", A1>=90, "优秀")
看出区别了吗?IFS不需要一层层嵌套括号,所有条件和结果平铺直叙,一目了然。

实战案例:成绩等级判断(手把手教你写)
场景: A列是学生的分数,B列要自动判断等级。
●0-59分:不及格
●60-74分:及格
●75-89分:良好
●90-100分:优秀
操作步骤:
1.选中B2单元格(第一个要填等级的单元格)
2.输入公式:=IFS(A2<60,"不及格",A2<75,"及格",A2<90,"良好",A2>=90,"优秀")
3.按回车,B2就会自动显示对应等级
4.鼠标放在B2单元格右下角,等光标变成十字(填充柄),双击或往下拉,整列就都自动算好了
公式解释:
●A2<60,"不及格" —— 如果分数小于60,返回"不及格"
●A2<75,"及格" —— 如果上一个条件不满足(也就是≥60),且小于75,返回"及格"
●A2<90,"良好" —— 如果上一个不满足(也就是≥75),且小于90,返回"良好"
●A2>=90,"优秀" —— 如果前面都不满足(也就是≥90),返回"优秀"
注意事项:条件顺序很重要!
这里有个超级容易踩的坑,我必须重点说——
IFS是从左到右依次判断的,找到第一个满足的条件就停下来了。所以条件的顺序非常关键!
举个反例,如果把公式写成这样:
=IFS(A2<90,"良好",A2<75,"及格",A2<60,"不及格",A2>=90,"优秀")
那一个58分的学生,会被判断成"良好"——为什么?因为58<90是对的啊!第一个条件就满足了,直接返回"良好",后面的条件根本不会检查。
记住原则:范围判断时,要么从低到高排,要么从高到低排,千万别乱序。 一般来说,从高到低或者从低到高都可以,但必须是一个方向,不能跳。
— — —
SWITCH函数:精确匹配更高效,比IFS还省事儿
语法说明
IFS擅长的是范围判断(比如大于多少、小于多少),那如果是精确匹配的场景呢?比如"部门是A就补贴500,部门是B就补贴800,部门是C就补贴1000"这种。
这时候,SWITCH函数更合适。
SWITCH的语法:
=SWITCH(要判断的值, 值1, 结果1, 值2, 结果2, 值3, 结果3, ..., 都不匹配时返回什么)
和IFS的区别
很多人容易搞混IFS和SWITCH,我给你一句话讲明白:
●IFS:判断的是"条件是否成立",每个位置都是一个完整的判断(比如A1>60)
●SWITCH:判断的是"值等于哪个",拿一个值去跟多个选项做精确匹配
用人话说就是:范围判断用IFS,精确匹配用SWITCH。
实战案例:部门补贴计算
场景: A列是员工所在部门,B列要计算部门补贴。
●技术部:补贴1000元
●产品部:补贴800元
●市场部:补贴600元
●其他部门:补贴300元
用SWITCH怎么写?
=SWITCH(A2, "技术部", 1000, "产品部", 800, "市场部", 600, 300)
就这么简单!最后那个300是"兜底值"——如果A2的值跟前面的都不匹配,就返回300。
操作步骤:
5.选中B2单元格
6.输入公式:=SWITCH(A2,"技术部",1000,"产品部",800,"市场部",600,300)
7.回车,然后下拉填充
对比一下,如果用IFS写同样的逻辑:
=IFS(A2="技术部",1000,A2="产品部",800,A2="市场部",600,TRUE,300)
也能用,但你得每个条件都写一遍A2=,啰嗦。SWITCH就清爽多了。
进阶技巧:SWITCH配合通配符做模糊匹配
有人可能会问:SWITCH只能精确匹配吗?如果我想"只要包含某个关键词就算匹配",行不行?
行!但得配合通配符和其他函数。比如你想判断A2里的职位,只要包含"经理"就返回管理层,包含"总监"就返回高管层:
=SWITCH(TRUE, ISNUMBER(SEARCH("经理",A2)), "管理层", ISNUMBER(SEARCH("总监",A2)), "高管层", "普通员工")
哎,你可能发现了,这写法好像跟IFS差不多?没错,当第一个参数写TRUE的时候,SWITCH的用法就跟IFS几乎一样了。这种写法虽然有点"绕",但遇到需要模糊匹配的场景,确实能派上用场。
— — —
组合技:条件函数+查找函数=效率翻倍
条件函数单拎出来已经很强了,但如果跟查找函数组合使用,那才是真正的"王炸"。
XLOOKUP+IFERROR容错:查不到不报错
VLOOKUP大家都熟,但它有个老毛病——找不到匹配值的时候,直接甩你一个#N/A错误,打印出来特别难看。
这时候用IFERROR(或者IFNA)包一层,就能完美解决。
=IFERROR(XLOOKUP(A2, 员工表!A:A, 员工表!B:B), "查无此人")
公式解释:
●XLOOKUP去员工表里根据A2的姓名查找对应的部门
●如果找到了,就返回部门名称
●如果找不到(报错),就返回"查无此人"
操作步骤:
8.选中要放结果的单元格
9.先写XLOOKUP的核心查找逻辑
10.在外层套上IFERROR,第二个参数写"查不到时显示什么"
11.回车搞定
INDEX+MATCH+IF:多条件查找
VLOOKUP和XLOOKUP默认都是单条件查找,但工作中经常需要同时满足两个甚至多个条件才能找到对应的值。
比如,你要同时根据"姓名"和"月份"找到对应的销售额:
=INDEX(销售额列, MATCH(1, (姓名列=A2)*(月份列=B2), 0))
这是个数组公式,原理是利用(姓名列=A2)生成一组TRUE/FALSE,(月份列=B2)再生成一组,两组相乘之后,只有两个都满足的位置才会得到1,其他都是0。然后MATCH找到1的位置,INDEX再去对应的位置取数。
不过这个公式有个缺点——如果找不到匹配项,会返回#N/A。所以通常也会包一层IFERROR:
=IFERROR(INDEX(C:C, MATCH(1, (A:A=E2)*(B:B=F2), 0)), "未找到")
FILTER函数:一对多筛选,比VLOOKUP强太多
如果你用的是Excel 365或者2021版本,那FILTER函数绝对是你必须掌握的神器。
VLOOKUP只能找到第一个匹配项,但FILTER可以把所有满足条件的结果都找出来。
比如,你想把"市场部"的所有员工都筛选出来:
=FILTER(员工表!A:B, 员工表!B:B="市场部", "无匹配数据")
公式解释:
●第一参数:你要返回哪些列的数据
●第二参数:筛选条件(可以是多个条件,用*连接表示"且",用+连接表示"或")
●第三参数:没有匹配结果时返回什么
而且FILTER是动态数组,输完公式按回车,会自动"溢出"到下面的单元格,所有结果一次性全部显示出来,不用下拉填充。

— — —
真实工作场景实战:工资个税计算
说了这么多,咱们来一个真正的职场实战——工资个税计算。这个场景几乎每个HR、财务都会碰到,也是嵌套IF的"重灾区"。
场景描述
根据最新的个税税率表(综合所得年度税率表简化版),工资减去起征点(5000)后的应纳税所得额,按以下档位计算:
应纳税所得额 | 税率 | 速算扣除数 |
不超过3000元 | 3% | 0 |
超过3000至12000元 | 10% | 210 |
超过12000至25000元 | 20% | 1410 |
超过25000至35000元 | 25% | 2660 |
超过35000至55000元 | 30% | 4410 |
超过55000至80000元 | 35% | 7160 |
超过80000元 | 45% | 15160 |
个税 = 应纳税所得额 × 税率 - 速算扣除数
用嵌套IF写有多痛苦
我见过有人用嵌套IF写个税公式,写出来是这样的(我就不全写了,意思一下):
=IF(A2<=3000, A2*3%, IF(A2<=12000, A2*10%-210, IF(A2<=25000, A2*20%-1410, ...)))
7个档位,意味着要嵌套6层IF。公式写完,编辑栏要拉好长才能看完。下个月税率要是调整了,改起来能让人头大。
用IFS改写后有多清爽
同样的逻辑,用IFS写是这样的:
=IFS(A2<=3000, A2*3%,A2<=12000, A2*10%-210,A2<=25000, A2*20%-1410,A2<=35000, A2*25%-2660,A2<=55000, A2*30%-4410,A2<=80000, A2*35%-7160,A2>80000, A2*45%-15160 )
你看,每个档位一行,清清楚楚。加条件、改税率,直接找到对应的那一行改就行,完全不用动脑子找括号。
操作步骤:
12.假设A列是"应纳税所得额"(工资-5000-五险一金-专项附加扣除后的金额)
13.在B2单元格输入公式:
=IFS(A2<=3000,A2*3%,A2<=12000,A2*10%-210,A2<=25000,A2*20%-1410,A2<=35000,A2*25%-2660,A2<=55000,A2*30%-4410,A2<=80000,A2*35%-7160,A2>80000,A2*45%-15160)
14.按回车,个税金额就出来了
15.下拉填充,所有人的个税一键算完
效率对比
对比项 | 嵌套IF | IFS函数 |
括号数量 | 12个左右 | 2个 |
可读性 | 需逐层拆解 | 平铺直叙一目了然 |
修改难度 | 找对应层要半天 | 找到对应行直接改 |
出错概率 | 高(括号漏配对) | 低 |
毫不夸张地说,用IFS写个税公式,至少节省80%的维护时间。

— — —
踩坑经验:5个最容易犯的错,我都替你踩过了
这些年帮同事排查公式问题,条件函数的坑我见得太多了。给你总结5个最常见的,避开它们,你的公式正确率直接上一个台阶。
坑1:条件顺序搞反了
这个前面提过,但我必须再强调一遍——IFS是从左到右判断的,第一个满足的条件就返回了。
如果你写成绩等级,把"良好"的条件(<90)放在"及格"的条件(<75)前面,那70分的人会被判定为"良好",因为70<90成立啊!
避坑方法: 写范围判断的时候,要么从小到大排,要么从大到小排,保持同一个方向。建议新手从低到高写,不容易乱。
坑2:漏掉括号/括号不配对
嵌套IF最常见的错误就是括号不配对。少一个右括号,Excel直接报错;多一个右括号,也报错。
避坑方法:
●尽量用IFS代替嵌套IF,从根源上减少括号
●如果一定要写嵌套IF,写完后把光标放在公式里,Excel会高亮显示配对的括号,检查一下是不是每个左括号都有对应的右括号
●善用Alt+Enter在公式里换行,把每层IF分开写,结构清晰很多
坑3:数字和文本格式不统一,判断失效
这是一个非常隐蔽的坑。比如A列看起来是数字,但其实是文本格式(左上角有个小绿三角),你写IF(A1>60, "及格", "不及格"),结果发现所有人都显示"不及格"。
为什么?因为文本和数字比大小,Excel默认文本更大,所以A1>60这个条件,对于文本格式的数字来说,结果可能跟你想的完全不一样。
避坑方法:
●选中数据列,点击左上角的感叹号,选择"转换为数字"
●或者在公式里用VALUE(A1)强制转成数字再判断
坑4:边界值处理——等于号放哪边?
"大于等于80算良好还是优秀?""刚好60分算及格还是不及格?"这种边界值的问题,说大不大说小不小,但搞错了就是工作事故。
比如写成绩等级:
=IFS(A2<60,"不及格", A2<80,"及格", A2<90,"良好", A2>=90,"优秀")
在这个公式里,60分是及格的(因为不满足<60,进入下一个条件,60<80成立,返回及格),90分是优秀的。逻辑是对的。
但如果你写成A2<=60,"不及格",那刚好60分的同学就变成不及格了,人家得找你拼命。
避坑方法: 写完公式后,一定要用边界值测试一下——比如刚好60分、刚好75分、刚好90分,看看结果对不对。别嫌麻烦,这一步能帮你避免90%的边界值错误。
坑5:#N/A、#VALUE!错误怎么排查
IFS如果所有条件都不满足,会返回#N/A;如果条件写错了(比如文本跟数字瞎比),会返回#VALUE!。
排查思路:
16.#N/A错误: 检查是不是所有可能的情况都覆盖到了。如果不确定,就在最后加一个TRUE, "其他"作为兜底
17.#VALUE!错误: 检查数据类型是不是匹配——数字列里有没有文本、日期格式对不对
18.拿一个已知正确的值,手动代入公式一步步推,看看哪一步出了问题
— — —
结尾:怎么选函数?一张"决策树"帮你搞定
说了这么多函数,可能有人会问:实际工作中,我到底该用哪个?
给你一个简单的决策思路,顺着往下走就行:
第一步:判断类型
●只有一个条件?→ 用 IF
●多个条件?→ 往下走
第二步:判断方式
●是范围判断(大于多少、小于多少)?→ 用 IFS
●是精确匹配(等于什么值)?→ 用 SWITCH
第三步:要不要查数据?
●需要从别的表/区域查找对应值?→ 用 XLOOKUP/VLOOKUP + IFERROR
●需要多个条件同时匹配才能找到值?→ 用 INDEX+MATCH+IF 或 XLOOKUP多条件查找
●需要返回所有满足条件的结果?→ 用 FILTER
其实核心就一句话:能用简单函数搞定的,就别写复杂的嵌套。 公式写出来是给人看的,不是用来炫技的。你写的公式,过三个月你自己还能看懂,同事拿到手不用问你就能改,这才是好公式。
好了,今天的内容就到这里。IFS和SWITCH这两个函数,语法不难,难的是养成"告别嵌套IF"的思维习惯。下次再碰到多条件判断的场景,别上来就套IF,先想想能不能用IFS或SWITCH写得更清爽。
如果这篇文章对你有帮助,别忘了点个在看,分享给你身边那个还在写8层嵌套IF的同事~
— — —
*这里是效率小本本,每周一个Excel实用技巧,帮你早点下班。我们下周见!*