GUIDE

Excel IF 函数嵌套怎么写?从单条件到多层判断,一篇讲透

2026.03.25 · 阅读 8 分钟

IF 函数是 Excel 里最常用的逻辑函数——"如果满足条件就返回 A,否则返回 B"。一层 IF 很简单,但当你需要判断 3 个、5 个甚至更多条件时,IF 嵌套就成了噩梦:括号套括号,改一个地方全部报错。

这篇文章从最基础的单层 IF 讲起,逐步到多层嵌套,再到 Excel 2019+ 的 IFS 函数(专门解决嵌套问题),最后教你怎么用公式助手快速诊断嵌套公式的错误。

基础:单层 IF

IF 函数的语法很直白:

=IF(条件, 真值, 假值)

举个例子:成绩表里,60分以上显示"及格",60分以下显示"不及格":

=IF(B2>=60, "及格", "不及格")

姓名成绩结果
张三85及格
李四52不及格
王五60及格

关键点:>=60 包含 60 分。如果你想让 60 分也算不及格,用 >60(不含等号)。这种边界条件是 IF 公式出错的常见原因。

两层嵌套:3 个结果

如果需要 3 个等级——优秀/及格/不及格,就需要在 IF 的"假值"里再套一个 IF:

=IF(B2>=85, "优秀", IF(B2>=60, "及格", "不及格"))

读法:如果 ≥85 → 优秀;否则再看是否 ≥60 → 及格;都不满足 → 不及格。

成绩结果判断路径
92优秀92≥85 → 第一层命中
73及格73<85 → 进入第二层 → 73≥60 → 命中
45不及格45<85 → 45<60 → 落入最后的假值
嵌套 IF 的判断是从外到内、从上到下的。所以条件顺序很重要——应该从最严格(最高分)到最宽松(最低分)排列。如果你把 ≥60 写在 ≥85 前面,所有 85 以上的分数也会被 ≥60 先截走,永远不会到达"优秀"的判断。

三层嵌套:4 个等级

加一个"良好"等级(85 以上优秀,70-84 良好,60-69 及格,60 以下不及格):

=IF(B2>=85, "优秀", IF(B2>=70, "良好", IF(B2>=60, "及格", "不及格")))

你会发现规律:每多一个等级,就在最后的"假值"位置多套一层 IF。N 个等级需要 N-1 层嵌套。

嵌套地狱:当层数太多时

如果需要 5 个等级(A/B/C/D/F),公式变成:

=IF(B2>=90,"A",IF(B2>=80,"B",IF(B2>=70,"C",IF(B2>=60,"D","F"))))

4 层嵌套,4 个右括号,还算能看懂。但如果到了 7-8 层:

=IF(B2>=95,"A+",IF(B2>=90,"A",IF(B2>=85,"A-",IF(B2>=80,"B+",IF(B2>=75,"B",IF(B2>=70,"B-",IF(B2>=60,"C","F")))))))

这已经很难手动检查对不对了。括号数错一个、条件顺序反了、少写一个逗号——任何小错误都会导致整个公式崩溃。

Excel 2019 之前的版本最多支持 7 层 IF 嵌套(64 层从 2007 开始支持,但可读性约等于零)。如果你经常需要写多层判断,有更好的替代方案。

替代方案一:IFS 函数(推荐)

Excel 2019 / Microsoft 365 引入了 IFS 函数,专门解决嵌套 IF 的痛苦:

=IFS(条件1, 值1, 条件2, 值2, 条件3, 值3, TRUE, 默认值)

上面的 5 等级用 IFS 写:

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

对比一下:

写法嵌套 IFIFS
可读性括号套括号,层级深条件-值配对,平铺直叙
修改难度加/删一个等级要改多处加一对条件-值就行
括号数量N-1 个右括号只有 1 个
默认值最内层的假值TRUE, "默认值"
兼容性所有版本Excel 2019+ / Microsoft 365
IFS 的最后一组建议写 TRUE, "默认值"——这相当于 IF 的最后一个"假值",确保所有不满足前面条件的情况都有返回值。如果不写,当所有条件都不满足时会返回 #N/A 错误。

替代方案二:SWITCH 函数

如果你的判断条件是精确匹配(不是范围比较),SWITCH 更简洁:

=SWITCH(A2, "北京", "华北区", "上海", "华东区", "广州", "华南区", "未知")

SWITCH 适合:部门编码转部门名称、状态码转状态文字、城市映射到区域等"一对一"的映射关系。不适合"大于/小于"这类范围判断——那是 IF/IFS 的场景。

替代方案三:VLOOKUP + 辅助表

如果等级很多且可能经常调整,把判断标准做成一张辅助表,用 VLOOKUP 近似匹配:

辅助表(分数下限)等级
0F
60D
70C
80B
90A

=VLOOKUP(B2, 辅助表, 2, TRUE)

注意最后一个参数是 TRUE(近似匹配)——VLOOKUP 会找到不超过搜索值的最大值。辅助表必须按升序排列,否则结果不正确。详见 VLOOKUP 完整教程

IF 配合其他函数

IF + AND:同时满足多个条件

=IF(AND(B2>=60, C2="已提交"), "通过", "不通过")

成绩 ≥60 并且作业已提交才算通过。AND 里可以放多个条件,全部为真才返回 TRUE。

IF + OR:满足任一条件

=IF(OR(B2="经理", B2="总监"), "管理层", "员工")

职位是经理或者总监,都归类为管理层。

IF + ISBLANK:判断是否为空

=IF(ISBLANK(B2), "未填写", B2)

如果单元格为空就显示提示文字,否则显示原内容。处理问卷数据、表单数据时很常用。

IF + ISERROR:错误处理

=IF(ISERROR(VLOOKUP(A2, 数据表, 2, FALSE)), "未找到", VLOOKUP(A2, 数据表, 2, FALSE))

如果 VLOOKUP 找不到返回错误,就显示"未找到"。不过更简洁的写法是用 IFERROR:

=IFERROR(VLOOKUP(A2, 数据表, 2, FALSE), "未找到")

嵌套公式调试技巧

公式报错了但不知道哪里错——这是 IF 嵌套最头疼的问题。几个实用方法:

F9 逐段求值:在编辑栏里选中公式的某一部分,按 F9,Excel 会把这部分计算出来显示实际值。比如选中 B2>=85 按 F9,会显示 TRUE 或 FALSE——帮你确认每个条件是否按预期工作。查完后按 Esc 取消(不要按回车,否则公式会被替换成值)。

公式求值步进:公式 → 公式求值(Evaluate Formula),可以像单步调试代码一样,一步一步看公式的计算过程。每点一次"求值"按钮,Excel 就计算一层,帮你定位到底是哪一层出了问题。

分步写到辅助列:如果嵌套太深实在看不懂,把每层 IF 拆开写到不同列里。比如 D 列写 =IF(B2>=85,"优秀",""),E 列写 =IF(B2>=60,"及格",""),确认每层逻辑正确后再合并成一个嵌套公式。

用公式助手自动诊断:如果公式报错或结果不对,把公式粘贴到公式助手里,工具会自动拆解嵌套层级、检查括号匹配、提示常见逻辑错误。比手动排查快得多。

常见错误

括号不匹配

N 层嵌套需要 N+1 个括号(包括 IF 本身的)。少一个右括号就报错。编辑公式时注意 Excel 编辑栏会用不同颜色标记配对的括号——颜色对不上就是少了括号。

条件顺序反了

嵌套 IF 从外到内判断,所以条件应该从最严格到最宽松排列。如果你把 >=60 写在 >=85 前面,所有 85 以上的分数都会被 ≥60 先截走。

文本值忘记加引号

=IF(B2>=60, 及格, 不及格) 会报错——文本值必须用英文双引号包裹:"及格"。数字不需要引号。

比较文本时大小写问题

=IF(A2="yes", "是", "否") 默认不区分大小写——"YES"、"Yes"、"yes"都会匹配。如果需要精确区分大小写,用 EXACT 函数:=IF(EXACT(A2,"yes"), "是", "否")

空单元格的陷阱

空单元格在数值比较中被当作 0。所以 =IF(B2>0, "有值", "无值"),空单元格会返回"无值",但数字 0 也会返回"无值"。如果需要区分空和 0,用 =IF(ISBLANK(B2), "空", IF(B2>0, "正数", "零或负数"))

选择哪种方案?

场景推荐方案
2-3 个等级嵌套 IF(简单,所有版本兼容)
4+ 个等级的范围判断IFS(Excel 2019+)或 VLOOKUP+辅助表
精确匹配映射SWITCH 或 VLOOKUP
多条件组合判断IF + AND/OR
等级标准经常调整VLOOKUP+辅助表(改表不改公式)
ESC