Excel多条件判断:IF与AND/OR组合嵌套实战教程
2026/9/2 6:32:35 网站建设 项目流程

很多人在职场中第一次接触 Excel 函数,不是从 VLOOKUP 开始的,而是从 IF 开始的。

原因很简单:业务里到处都是“条件判断”。“业绩达标了就发奖金,没达标就不发”“金额超过 5000 走经理审批,否则普通审批”“入职满一年并且绩效在 B 以上才有调薪资格”。这些规则用大白话说谁都能听懂,但要写成 Excel 公式,一部分人就开始犯难了。

更常见的情况是,很多人学会了 IF 的基本用法,一遇到“同时满足两个条件”或“满足其中一个条件”就卡住了。脑子里知道要判断两个东西,但不知道公式该怎么写。于是有人写成了IF(A1>60, B1>60, "及格", "不及格"),Excel 直接报错;有人用IF(A1>60, IF(B1>60, "及格", "不及格"), "不及格")硬套了两层 IF,虽然能出结果,但条件一多公式就变得又长又乱。

这里真正需要补上的,不是更多 IF 的嵌套技巧,而是 AND 和 OR 两个逻辑函数。

本文会从 IF 函数的本质讲起,把 AND、OR 单条件场景讲透,再进入 IF + AND、IF + OR 的组合嵌套,最后用职场里真实存在的绩效、订单、考勤案例做完整演示。读完你不仅能把公式写对,还能知道什么时候该用嵌套 IF,什么时候更建议用 AND / OR 来简化逻辑。

1. 核心认知:IF 函数解决的是“非此即彼”的判断

先明确一个判断:IF 函数本身只能做“二选一”的判断。不管你要判断的条件有多复杂,最终结果只有两种:条件成立时返回什么,条件不成立时返回什么。

IF 函数的语法是这样的:

IF(判断条件, 条件成立时的返回值, 条件不成立时的返回值)

举个例子。销售部门想判断某个客户是否属于“大客户”,规则是“订单金额大于 10000 元”。

=IF(C2>10000, "大客户", "普通客户")

这个公式的逻辑很清楚:C2 单元格的金额大于 10000,返回“大客户”,否则返回“普通客户”。

这里的关键认知是:IF 函数的第一参数,本质上是“一个能计算出 TRUE 或 FALSE 的表达式”。你写的C2>10000是一个比较运算,它计算出的结果要么是 TRUE,要么是 FALSE。IF 就是根据这个 TRUE 或 FALSE 决定返回哪个值。

想通这一点,后面的多条件嵌套就自然了。

当你要判断的条件本身很复杂,比如“同时满足两个条件”,你不能直接把它塞进 IF 的第一参数里。因为C2>10000 并且 D2="已付款"这种描述不是 Excel 能直接识别的表达式。你需要在 IF 外面,或者在 IF 的第一参数里面,借助其他函数把这个“复杂的业务规则”变成一个 TRUE / FALSE 结果。

这就是 AND 和 OR 的用武之地。

2. AND 与 OR 的作用:把多个条件“合并”成一个结果

AND 和 OR 本身不是用来返回“是/否”文字的,它们的作用是把多个条件组合起来,最终输出一个 TRUE 或 FALSE。

AND 函数的逻辑是:所有条件都成立,才返回 TRUE;只要有一个不成立,就返回 FALSE。

AND(条件1, 条件2, 条件3, ...)

OR 函数的逻辑是:只要有一个条件成立,就返回 TRUE;全部不成立,才返回 FALSE。

OR(条件1, 条件2, 条件3, ...)

从数学逻辑上看,AND 对应“交集”,OR 对应“并集”。职场场景里最常见的对应关系是:

  • AND:所有条件都要满足,相当于“同时满足”“并且”。
  • OR:满足其中任意一个即可,相当于“或者”“任一满足”。

用一个例子对比。假设要判断一个员工是否满足“优秀员工”评选条件:

条件一:出勤率大于 95%。

条件二:绩效等级为“A”。

如果用 AND 组合,公式是:

=AND(C2>0.95, D2="A")

只有两个条件都为 TRUE,结果才是 TRUE。

如果用 OR 组合,公式是:

=OR(C2>0.95, D2="A")

只要出勤率高,或者绩效是 A,结果就是 TRUE。

到这里你可能会想:这不就是把条件写在 AND / OR 里,然后嵌套进 IF 的第一参数吗?对,Excel 多条件判断的核心套路,就是这一句话。

3. 同时满足两个条件:IF + AND 嵌套

先看一个职场里非常典型的场景。

某公司规定:员工入职满一年,且绩效考核在 B 级以上,才能参与年度调薪。现在有一张员工信息表,A 列是工号,B 列是入职日期,C 列是绩效等级。需要 D 列判断该员工是否有调薪资格。

这种“两个条件必须同时满足”的需求,对应的就是 AND。

3.1 判断员工是否有调薪资格

先用 DATEFIF 判断入职年限。如果在 D 列判断,假设入职日期在 B2,今天日期用 TODAY() 函数获取:

=DATEDIF(B2, TODAY(), "Y") >= 1

上面这段公式单独运行,结果是 TRUE 或 FALSE。

再把绩效等级条件加进去:

=AND(DATEDIF(B2, TODAY(), "Y") >= 1, C2 >= "B")

这里要注意:绩效等级如果是文本形式,比较时要加双引号。如果绩效等级是 A、B、C 这种字母,Excel 按文本比较时,字母顺序是比较规则的基础,但更稳妥的做法是直接写“绩效等级文本等于某个值”。

比如绩效等级明确要求“B级以上”,而表中等级只有“A”“B”“C”“D”,可以这样写:

=AND(DATEDIF(B2, TODAY(), "Y") >= 1, OR(C2="A", C2="B"))

这里的 OR 把“A 或 B”合并成一个条件,再和“入职满一年”做 AND。这就是 IF + AND + OR 的最小嵌套模型,后面会专门展开。

先看标准 IF + AND 写法,把结果直接显示为“有资格”或“无资格”:

=IF(AND(DATEDIF(B2, TODAY(), "Y") >= 1, C2="A"), "有资格", "无资格")

如果认为绩效 B 也算 B 级以上,就把 C2="A" 改成OR(C2="A", C2="B"),变成:

=IF(AND(DATEDIF(B2, TODAY(), "Y") >= 1, OR(C2="A", C2="B")), "有资格", "无资格")

先不看这个式子有多长,只看它的结构:

  • 外层 IF 负责返回“有资格”或“无资格”。
  • 第一参数是 AND(组合整体条件)。
  • AND 内部有一个 DATEDIF 条件和一个 OR 条件。
  • OR 内部再组合两个绩效等级。

这就是一层一层把业务规则翻译成函数的过程。你不需要一次性写出这么长的公式,可以先在单独单元格里验证 AND 的结果是不是 TRUE,再嵌套进 IF。

3.2 如果只看表面,很容易会认为 IF 嵌套越多越复杂

很多人一看到这种公式就发怵,觉得长公式很难懂。其实公式可读性的核心,不是长度,而是结构。

IF(AND(..., ...), "返回值1", "返回值2")这种结构非常固定:只要记住“IF 的第一参数里,用 AND 表达同时满足”,就够了。

多个条件同时满足,就都写在 AND 里:

=IF(AND(条件1, 条件2, 条件3), "是", "否")

需要几个条件,就写几个。比如三个条件:

=IF(AND(C2>=100, D2="已付款", E2<>""), "有效订单", "无效订单")

第三个条件E2<>""表示 E2 不为空。这样写的好处是,逻辑全部集中在 AND 里,IF 只是负责按 TRUE / FALSE 返回文字。

4. 满足其中一个条件:IF + OR 嵌套

与“同时满足”相反的场景也很常见:多个条件里,只要满足一个,就算达标。这时候该用 OR。

4.1 判断是否满足优惠条件

假设一个电商场景:订单满足以下任一条件,就可以享受会员价。

条件一:会员等级为“金卡”。

条件二:累计消费金额大于 5000 元。

条件三:本单金额大于 1000 元。

三个条件只要满足其一,就返回“会员价”,否则返回“标准价”。

用 OR 把所有条件包起来,再放进 IF 第一参数:

=IF(OR(D2="金卡", E2>5000, F2>1000), "会员价", "标准价")

这里 D2 是会员等级,E2 是累计消费,F2 是本单金额。 OR 内部三个条件独立判断,任何一个为 TRUE,OR 返回 TRUE,IF 就会返回“会员价”。

4.2 用 OR 简化同类判断

OR 还有一个非常实用的变体用法:当你要判断“某个单元格是否等于多个固定值中的一个”时,可以用 OR 替代一层层 IF。

举个例子。判断某个部门是否属于“销售体系”,规则是:部门为“销售一部”“销售二部”“销售三部”时,返回“是”;否则返回“否”。

错误写法是把 IF 一层层套下去:

=IF(A2="销售一部", "是", IF(A2="销售二部", "是", IF(A2="销售三部", "是", "否")))

正确且更清晰的做法:

=IF(OR(A2="销售一部", A2="销售二部", A2="销售三部"), "是", "否")

两种写法计算结果完全一样,但 OR 版本短得多,后续也更容易维护。如果你从数据验证下拉框里改部门名称,只需要改 OR 里的条件即可。

这种场景是 OR 最典型的用法:多个条件之间是“或”的关系,且业务上属于同一类判断。

5. 复杂场景:IF + AND + OR 混合嵌套

职场里的真实条件,常常不只是“同时满足两个条件”或者“满足其中一个条件”这样简单。更常见的是混合逻辑,比如:“满足 A 且 B,或者满足 C”这样的规则。这时候就需要把 AND 和 OR 一起放进 IF 里。

先看一个经典场景。

某公司设置销售奖金规则:

  • 方案一:销售金额大于 100000,并且回款比例大于 80%,发放全额奖金。
  • 方案二:销售金额大于 200000,即使回款比例未达到 80%,也发放全额奖金。
  • 其他情况,发放 50% 奖金。

翻译成逻辑表达式:

  • 方案一:金额>100000 AND 回款>80%
  • 方案二:金额>200000
  • 整体条件:(方案一) OR (方案二)

写成 Excel 公式:

=IF(OR(AND(C2>100000, D2>0.8), C2>200000), "全额奖金", "50%奖金")

这里的结构是:

  • 外层 IF 是最终判断。
  • 第一参数是 OR。
  • OR 的第一个条件是 AND(同时满足金额和回款)。
  • OR 的第二个条件是单个判断(金额大于 200000)。

这种公式看起来复杂,但只要一层层拆开看,完全能读懂:其实就是“两种达标路线,达到任意一种就发全额奖金”。

5.1 混合嵌套的拆解方法

如果你在写复杂公式时觉得头晕,建议不要在单元格里一口气写完。正确做法是先拆条件。

假设有四个单元格:

  • A2:销售金额
  • B2:回款比例
  • C2:是否新客户(是/否)
  • D2:是否重点客户(是/否)

业务规则:销售金额大于 100000,同时满足“新客户”或“重点客户”,才算有效订单。

先写条件 D 部分:新客户或重点客户。

OR(C2="是", D2="是")

再写整体条件:金额大于 100000,并且满足上面的 OR。

AND(A2>100000, OR(C2="是", D2="是"))

最后放进 IF:

=IF(AND(A2>100000, OR(C2="是", D2="是")), "有效订单", "无效订单")

再复杂一层。假设规则是:“金额大于 100000,并且满足新客户或重点客户”或者“金额大于 500000 的老客户”。

逻辑:

  • 路线一:A2>100000 AND (C2="是" OR D2="是")
  • 路线二:A2>500000 AND C2="否"

整体:

=IF(OR(AND(A2>100000, OR(C2="是", D2="是")), AND(A2>500000, C2="否")), "有效订单", "无效订单")

你会发现,复杂公式其实就是从简单子条件一层层组合出来的。写之前先在草稿纸上把条件用括号括起来,比在 Excel 里直接写要稳妥得多。

6. 职场实战案例与完整公式清单

下面给出几个可以直接搬到实际工作中的完整案例。每个案例都会给出表格结构、业务规则和最终公式。

6.1 案例一:员工绩效评级

表格结构:

  • A2:员工姓名
  • B2:销售额
  • C2:出勤率
  • D2:绩效等级(A/B/C/D)

规则:

  • 销售额大于 50000,且出勤率大于 95%,且绩效等级为 A 或 B:评级为“优秀”。
  • 不满足以上条件,评级为“普通”。

公式:

=IF(AND(B2>50000, C2>0.95, OR(D2="A", D2="B")), "优秀", "普通")

执行逻辑拆解:

  • OR(D2="A", D2="B"):绩效等级是否为 A 或 B。
  • AND(..., ..., ...):三个条件同时成立。
  • IF 返回“优秀”或“普通”。

6.2 案例二:订单折扣计算

表格结构:

  • A2:订单金额
  • B2:客户类型(VIP/普通)
  • C2:是否首次合作(是/否)
  • D2:折扣率

规则:

  • VIP 客户,或者首次合作客户,并且订单金额大于 2000:享受 9 折。
  • 其他情况:无折扣。

注意这里有一个优先级问题:业务规则中“并且”只作用于订单金额,而“或者”连接客户类型和首次合作。写成公式:

=IF(AND(OR(B2="VIP", C2="是"), A2>2000), 0.9, 1)

这里输出的 0.9 表示打 9 折,直接用数字参与后续计算;1 表示不打折。如果需要在屏幕上显示“9折”文本,可以改为:

=IF(AND(OR(B2="VIP", C2="是"), A2>2000), "9折", "无折扣")

实际工作中建议用数字而不是文本,因为折扣率后续还要参与金额计算。如果 D2 里保存的是折扣率,可以把公式改成:

=IF(AND(OR(B2="VIP", C2="是"), A2>2000), 0.9, 1)

然后计算折后金额:

=A2*D2

这种写法避免把“9折”文本再次转换成数值,后续计算更方便。

6.3 案例三:考勤与补贴发放

表格结构:

  • A2:员工姓名
  • B2:当月迟到次数
  • C2:当月请假天数
  • D2:是否申请补贴(是/否)

规则:

  • 迟到次数小于等于 2 次,且请假天数小于等于 1 天,并且申请了补贴:发放全额补贴。
  • 迟到次数小于等于 2 次,但请假超过 1 天:发放 50% 补贴。
  • 其他情况:无补贴。

这个案例是一个典型的多层 IF + AND 结构,因为它有三档结果,单靠一个 IF 无法完成。

=IF(AND(B2<=2, C2<=1, D2="是"), "全额补贴", IF(AND(B2<=2, C2>1), "50%补贴", "无补贴"))

注意这个公式里有两个 IF。外层 IF 先判断最高档条件,成立返回“全额补贴”;不成立时进入第二个 IF,判断第二档条件,成立返回“50%补贴”;都不成立返回“无补贴”。这是 IF 嵌套处理三档及以上结果的典型结构。

同时可以注意到,这个公式并没有同时使用 AND 和 OR,而是用了两个 AND。如果规则改成“迟到次数小于等于 2 次,或者请假天数小于等于 1 天”,才进入后续判断,那这里就需要 OR。实际场景按业务逻辑来选。

6.4 案例四:多条件筛选标记

表格结构:

  • A2:产品名称
  • B2:库存数量
  • C2:在售状态(在售/停售)

规则:库存低于 20,并且是在售状态,标记为“补货提醒”。

这里本质上还是两个条件同时满足:

=IF(AND(B2<20, C2="在售"), "补货提醒", "")

如果不需要显示“否”或“”以外的内容,可以留空。这里的“”表示返回空文本,单元格看起来干干净净。这是职场表格里很常见的小技巧:条件不满足时,宁可留空,也不要返回“不满足”“否”等容易干扰视觉的文字。

7. 常见错误:为什么你的公式总是返回错误或结果不对

7.1 常见错误类型对照表

问题现象可能原因排查方式解决方案
公式报错“#NAME?”函数名拼写错误,或缺少括号检查函数名是否为 IF、AND、OR确认函数名和括号匹配,英文括号必须成对
公式报错“#VALUE!”文本条件没有加英文双引号查看条件区域是否出现中文引号所有文本条件写成"文本",比如"是""KA"
数字条件判断结果不对单元格是文本格式,无法比较用 TYPE 函数查看单元格类型,或看单元格左上角是否有绿三角将文本型数字转换为数值格式,或使用 VALUE 函数
满足条件却返回“否”比较方向写反,比如把<写成>单步调试 AND / OR 的结果在空白单元格先测试=AND(...)返回什么
结果返回的是 TRUE / FALSE 而不是“是/否”只写了 AND / OR,没有嵌套进 IF检查公式是否缺少最外层 IF=IF(AND(...), "是", "否")包裹
嵌套层数过多,公式冗长用 IF 一层层做同类判断审视条件之间的逻辑关系用 OR 替代多个 IF 的并联判断,或使用 IFS 函数
公式返回 0 而不是空白返回空文本时写了 0检查 IF 第三参数需要留空时写"",不要写 0

7.2 最常见的三个坑

第一个坑:文本条件的中英文引号问题。

=IF(D2="是", "合格", "不合格")

中文引号“是”会导致公式报错。Excel 公式中所有引号都必须是英文半角引号。如果从网页或微信复制公式到 Excel,经常会出现引号被自动换成中文引号的情况。遇到公式突然报错,先检查引号。

第二个坑:直接写多条件,没有用 AND / OR 包起来。

=IF(C2>10000, D2="已付款", "有效", "无效")

这个写法是错误的。IF 函数只接受三个参数,这里写了四个内容,Excel 会提示“此函数输入的参数过多”。正确做法是把两个条件放进 AND:

=IF(AND(C2>10000, D2="已付款"), "有效", "无效")

第三个坑:条件写反,导致“看似正确,实际结果错误”。

例如“迟到次数小于等于 2 次”,有人会写成B2>=2,结果变成“迟到次数大于等于 2 次才满足”。这种错误最难排查,因为公式不报错,但业务结果完全反了。建议写完公式后,用一条明显不满足条件的数据测试一下,再用一条满足条件的数据测试,两条都符合预期,公式才基本可靠。

8. 最佳实践:让逻辑分层,避免嵌套地狱

8.1 用辅助列拆分长公式

很多职场 Excel 表里能看到那种超长公式:一个单元格里嵌套了七八个 IF,后面同事完全看不懂,甚至作者本人过两个月也看不懂。这种“嵌套地狱”的主要成因,是把所有逻辑都塞进一个单元格。

更推荐的做法是使用辅助列。

比如要判断“是否重点客户”,规则是:累计消费大于 50000,或者近一年购买次数大于 10,同时客户类型不是“内部员工”。算法很清晰,可以直接写成一个公式:

=IF(AND(OR(H2>50000, I2>10), J2<>"内部员工"), "重点客户", "普通客户")

如果觉得还是不直观,可以拆成两步。

先加一列“是否高价值客户”:

=OR(H2>50000, I2>10)

再加一列“是否重点客户”:

=IF(AND(K2, J2<>"内部员工"), "重点客户", "普通客户")

K 列就是辅助列,存放的是 OR 的计算结果。两列公式结构一目了然,后续排查也只需要检查辅助列是哪一环出了问题。

真实业务里,我非常建议对复杂的判断逻辑使用辅助列。虽然表面上多占了一列,但可读性和可维护性提升非常明显。你甚至可以把辅助列隐藏起来,不影响表格美观。

8.2 优先用 AND / OR,而不是无脑嵌套 IF

很多初学者遇到多条件判断,第一反应就是套多个 IF。事实上,AND / OR 在设计之初就是为了解决“多个条件如何组合”这件事。能用 AND / OR 搞定,就不要用多个 IF 硬套。

对比两个写法:

=IF(A2="A", IF(B2="是", "通过", "不通过"), "不通过")
=IF(AND(A2="A", B2="是"), "通过", "不通过")

两个公式结果一样,但第二个明显更好读。判断逻辑越复杂,这种优势越明显。

8.3 建议用 IFS / SWITCH 处理多档结果

当判断条件不是一个 TRUE / FALSE 问题,而是多个档位时,比如绩效评级分成“优、良、中、差”,可以考虑 IFS 函数。

IFS 的语法是:

IFS(条件1, 返回值1, 条件2, 返回值2, ...)

相比多个 IF 嵌套,IFS 更扁平,读起来更顺。

要判断销售额对应评级:

=IFS(B2>=100000, "优", B2>=50000, "良", B2>=10000, "中", TRUE, "差")

最后一个TRUE表示“其他所有情况”,相当于 IF 的第三参数。

不过要提醒的是:IFS 是 Excel 2019 之后版本和 Office 365 才支持的函数。如果是旧版本 Excel,或者 WPS 的旧版本,IFS 可能不可用。需要根据同事的 Excel 版本情况选择方案。这就是为什么很多老手仍然坚持用 IF + AND / OR,因为兼容性最好。

8.4 条件判断结果建议尽量返回数值

职场表格经常要拿结果做后续汇总。比如“是否发放奖金”这一列,返回“发放”和“不发放”文本看起来直观,但后面如果要做 SUM 求和,就傻眼了。

更推荐返回 1 和 0:

=IF(AND(C2>10000, D2="已付款"), 1, 0)

后续数据透视表可以直接对“奖金标记”求和,统计多少人达标。如果希望显示直观文字,可以再加一个自定义格式,或者单独做一列展示文本。总之,底层数据用数值,展示层用文本,是表格设计里更稳妥的思路。

9. 从公式到业务:多条件判断的思维升级

到这里,IF、AND、OR 的嵌套用法已经讲得比较完整了。回顾一下:

  • IF 负责“根据 TRUE / FALSE 返回结果”。
  • AND 负责“所有条件同时满足”。
  • OR 负责“任一条件满足”。
  • 混合条件通过括号组合,先内后外逐步拆解。

学多条件判断,最有价值的不只是记住几个公式写法,而是把业务语言翻译成逻辑表达式的过程。拿到一个需求,不要急着打开 Excel,先在纸上把规则整理出来:“同时满足”画成 AND,“任一满足”画成 OR,多个组合用括号分层。这一步做清楚了,写公式就是按图施工,难度会大幅下降。

如果你手里正好有绩效表、订单表、考勤表需要做条件判断,可以拿本文的案例直接改成自己的字段名。先在一个空单元格里测 AND / OR 返回的 TRUE / FALSE,再确认最终结果,最后再套进 IF。这是最稳妥,也是最适合初学者的路线。

再往后,如果你想继续深入,可以关注三个方向:一是数据验证与条件格式的联动,用判断结果自动标记颜色;二是用 SUMPRODUCT 函数实现多条件计数求和;三是学习 XLOOKUP / INDEX + MATCH 做多条件查找。这些都是在多条件判断基础上自然延伸出来的实用技能,对提升职场表格处理能力会有更直接的帮助。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询