Excel多条件判断:IF嵌套AND与OR函数写法详解
2026/9/1 8:59:01 网站建设 项目流程

IF函数、AND函数、OR函数是Excel里面做多条件判断最基础、也最容易出问题的一组函数。单独用IF判断一个条件,大多数人都能写出来;一旦业务要求变成“同时满足两个条件才算达标”或者“满足其中一个条件就通过”,公式就开始频繁出错,常见表现是结果全是0、结果反了、或者直接弹出错误值。这篇文章会把IF嵌套AND、IF嵌套OR的完整写法和职场实际场景拆开讲,适合经常做绩效核算、销售统计、库存分类、名单筛选、考核评级的办公人员。我会从最基础的三函数分工讲起,再依次讲同时满足、满足其一、混合嵌套、多档位判断,最后给出排查顺序和优化思路。

1. 先把IF、AND、OR三个函数的职责分清楚

写嵌套公式时,很多人的第一个问题不是不会用某个函数,而是把三个函数的职责搞混了。IF负责的是“分流”,AND和OR负责的是“条件打包”。先理解这一点,后面所有嵌套都不会乱。

1.1 IF函数:一个“二选一”的开关

IF函数的结构是IF(条件, 条件成立时返回的值, 条件不成立时返回的值)。三个参数里,第一个参数是逻辑判断,第二个和第三个参数可以是数值、文本、单元格引用,甚至可以是另一个函数。Excel执行的时候,会先计算第一个参数,结果要么是TRUE,要么是FALSE,然后根据TRUE或FALSE决定返回第二个还是第三个参数。

例如=IF(A2>=60, "及格", "不及格"):A2是成绩,大于等于60就返回“及格”,否则返回“不及格”。这个例子看起来简单,但它是理解嵌套的基础。IF只是负责“根据TRUE/FALSE做二选一”,至于这个TRUE/FALSE是怎么来的,Excel并不关心,它可以是直接比较,可以是单元格里的TRUE/FALSE,也可以是AND、OR、NOT这些函数算出来的结果。

这里有一个新手常犯的错误:在IF的第一个参数里写一段完整公式却忘记比较,比如=IF(A2+B2, ...)。如果A2+B2的结果是数字,Excel在逻辑上下文里会把0当成FALSE、非0当成TRUE,看起来有时能出结果,但逻辑很不清晰,也容易出现误判。规范做法是明确写出比较运算符,比如A2+B2>100

1.2 AND函数:多个条件必须全部成立

AND函数的结构是AND(条件1, 条件2, ...),最多可以写255个条件。它返回的结果只有两种:所有条件全部为真,返回TRUE;只要有一个条件为假,返回FALSE。

AND函数单独使用的情况很少,因为单独返回的TRUE/FALSE在表格里直接展示意义有限。它最常见的用法就是塞进IF的第一个参数,用来充当“多条件开关”。比如:

=IF(AND(B2>=10000, C2>=22), 2000, 0)

含义是:B2的业绩达到10000,并且C2的出勤天数达到22,两个条件同时成立,结果给2000,否则给0。这里AND起到的就是把两个条件打包成一个TRUE/FALSE结果的作用。

1.3 OR函数:任意一个条件成立即可

OR函数的结构是OR(条件1, 条件2, ...),参数数量和AND一样。只要其中一个条件为真,返回TRUE;只有所有条件都为假,才返回FALSE。它和AND正好相反,一个偏向“全部”,一个偏向“任意”。

例如:

=IF(OR(D2="VIP客户", E2>=5000), "享受折扣", "不享受")

只要D2是VIP客户,或者E2订单金额达到5000,就返回“享受折扣”。这里OR就相当于把两个条件合并成一个“有任意一个成立”的逻辑判断。

1.4 为什么职场报表里很少只用一层IF

单一IF只能处理一个“要么A要么B”的判断。职场里的规则通常不是单一维度,比如“业绩达标且出勤达标才能发奖金”是两个维度,再比如“销售部且(业绩达标或客户好评率高)被评为优秀”就混合了AND和OR。如果只用一层IF,只能把条件写得很长,而且逻辑很难读。

真正解决问题的不是写一个更长的IF,而是把多个条件先交给AND或者OR做逻辑组合,再把组合结果交给IF。这也是整篇文章的核心思路:IF负责分流,AND、OR负责条件打包。

2. 同时满足两个条件:IF嵌套AND的典型写法

2.1 先拿绩效奖金场景做例子

假设有一张员工月度考核表,A列员工姓名,B列业绩金额,C列出勤天数。规则是:业绩大于等于10000,同时出勤天数大于等于22天,奖金2000,否则没有奖金。这个需求的关键词是“同时”,也就是两个条件必须全部满足,所以要用AND。

在D2单元格输入:

=IF(AND(B2>=10000, C2>=22), 2000, 0)

然后下拉填充到其他行。这里B2、C2是相对引用,每行会自动变成B3、C3,逻辑保持一致。

2.2 Excel执行顺序:从里到外,先算条件再分流

很多人在这个公式上出问题,是因为没有理解执行顺序。Excel会先计算AND(B2>=10000, C2>=22),得到TRUE或FALSE;然后再把这个结果交给IF。如果AND的结果是TRUE,IF返回第二个参数2000;如果是FALSE,IF返回第三个参数0。

换句话说,AND输出的不是“符合条件之后的具体奖金”,而是“条件是否成立”的开关。这个顺序在混合嵌套里更重要,遇到AND里面再套OR的公式,Excel仍然是先算最里层,再一层层往外算。

2.3 条件数量增加时,AND参数怎么扩

AND不限制只能写两个条件。比如规则变成“业绩大于等于10000,出勤大于等于22天,并且当月无客户投诉”,那就在AND里面追加一个条件:

=IF(AND(B2>=10000, C2>=22, D2="无投诉"), 2000, 0)

写法上没有变化,只是参数从两个变成三个。实际使用时不用怕条件多,AND的长处就是接收多个参数。但要注意,条件越多,后面排查起来越麻烦,所以条件超过三个时,我更建议先拆成辅助列,这个后面会专门讲。

2.4 很容易踩的三个坑

第一个坑是条件顺序写反。比如把“不满足时返回2000”和“满足时返回0”写反,结果会完全相反。第二个坑是文本条件没有加英文双引号,写成D2=无投诉,公式会报#NAME?错误。第三个坑是中文输入法下输入了中文逗号、中文括号,公式会被当成文本直接不计算。

这类问题从表面看是“公式不对”,实际上大多数是输入法习惯问题。写完公式先不要急着下拉填充,先看这一行结果是否符合预期,再检查单元格里的公式是否显示为文本。

注意:如果公式显示为文本,大概率是公式前面多了空格、单引号,或者把中文括号写进去了。先解决输入法问题,再去查函数逻辑。

3. 满足其中一个条件:IF嵌套OR的写法

3.1 用会员优惠场景说明

假设一家零售公司做促销:客户类型是VIP客户,或者单笔订单金额大于等于5000,就享受折扣。这里判断规则是“或者”,也就是满足其中任意一个就算。用OR就很直接:

=IF(OR(D2="VIP客户", E2>=5000), "享受折扣", "不享受")

如果D列客户类型写的是“VIP客户”,不管订单金额多少,都返回“享受折扣”;如果订单金额达到5000,不管是不是VIP,也返回“享受折扣”。只有两个条件都不满足,才返回“不享受”。

3.2 OR和AND的判断结果对比

把OR和AND放在一起看,差异非常清楚。

条件1条件2AND结果OR结果
TRUETRUETRUETRUE
TRUEFALSEFALSETRUE
FALSETRUEFALSETRUE
FALSEFALSEFALSEFALSE

记住这个表,就不会把AND和OR用混。AND喜欢“全真”,OR喜欢“有真”。实务里我判断用哪个函数,就看业务语句里是“并且”还是“或者”。“并且”用AND,“或者”用OR。

3.3 OR的多个条件和范围引用的注意事项

OR函数理论上可以写很多个条件,写法是OR(A2="A", B2="B", C2="C", ...)。但有一点要特别注意:如果直接把一个范围引用塞进OR去套条件,比如OR(A2:A100="产品A"),在旧版Excel里可能会返回不可预期的结果。这不是OR本身的问题,而是数组计算结果在不同版本里的行为不一样。

稳妥的做法是,要么把范围引用换成逐格判断,要么用SUMPRODUCT、COUNTIF这类专门处理范围统计的函数。单个单元格的条件判断,用OR没问题;跨越一整列做条件判断,先想清楚自己到底是要标记每一行,还是要做汇总统计。

3.4 OR嵌套IF之后,别在第三个参数上犯糊涂

IF嵌套OR时,最容易忽略的是“不符合条件”的返回值。业务里“不享受折扣”必须明确写出来,不能空着不写。如果IF的第三个参数省略,Excel会返回FALSE,表格里会出现一堆FALSE,后续做筛选、做计数都会出问题。

建议每个参数都写明确,哪怕结果就是空,也写成""。这样表格展现更干净,后面处理数据的人也不会被一堆FALSE和0搞晕。

4. 混合多条件:AND、OR一起嵌套,再加多层IF

4.1 销售部且业绩达标或好评率高:怎么读公式

公司评选月度优秀员工,规则是:部门必须是销售部,并且满足以下两个条件之一——业绩大于等于10000,或者客户好评率大于等于95%。这句话里既有“并且”,又有“或者”。公式这样写:

=IF(AND(A2="销售部", OR(B2>=10000, C2>=0.95)), "优秀", "待改进")

读的时候从最里层开始:先看OR(B2>=10000, C2>=0.95)是否成立,再把OR的结果和A2="销售部"一起放进AND。两个条件都成立,就返回“优秀”,否则返回“待改进”。

这个公式是职场里非常典型的“混合判断”。难的不是单个函数,而是搞清楚先组合谁、再组合谁。先把逻辑树画出来:角色是销售部,并且,结果是业绩达标或者好评率达标。对应的公式里,“销售部”用AND的第一参数,“业绩或好评率”用OR整体作为AND的第二参数。

4.2 多档位奖金:IF嵌套IF的写法与顺序

业务里经常有“三档、四档”的判断,比如业绩大于等于20000评级“高”,大于等于10000评级“中”,否则评级“低”。写成:

=IF(A2>=20000, "高", IF(A2>=10000, "中", "低"))

这个公式里,IF的第三个参数不再是一个固定值,而是另一个完整IF。Excel会先判断A2>=20000,成立就返回“高”;不成立再进入下一个IF判断A2>=10000。顺序非常关键,必须从高档往低档写。

如果反过来写成IF(A2>=10000, "中", IF(A2>=20000, "高", "低")),业绩30000的人因为先满足A2>=10000,会直接返回“中”,而不是“高”。这个坑在实操里出现频率非常高。判断顺序要遵守“先高后低”或者“先窄后宽”,永远不要把宽泛条件放在前面。

4.3 括号怎么才能不写错

混合嵌套以后,括号数量会明显增加。一个建议是:写公式时从最外层开始,把每个函数的开括号和闭括号数量对整齐。

以混合公式为例:

=IF(AND(A2="销售部", OR(B2>=10000, C2>=0.95)), "优秀", "待改进")

拆开看:IF有一个开括号、一个闭括号;AND有一个开括号、一个闭括号;OR有一个开括号、一个闭括号。开括号总数等于3,闭括号总数也等于3。

Excel在输入公式时,会用不同颜色标出匹配的括号。当光标停在某个括号上时,对应的开头或结尾括号会高亮。如果公式一直报“输入公式中存在错误”,优先检查括号数量是否一致。

如果括号多到眼晕,可以在公式编辑栏里选中一段子公式,按F9查看它的计算结果,看完按Esc退出,千万不要按回车。按了回车,选中部分会被替换成计算结果,原来的公式结构就被破坏了。

5. 结果不对时,按这个顺序排查

5.1 先用“公式求值”看执行过程

在Excel里选中带公式的单元格,点击“公式”选项卡下的“公式求值”,会一步一步显示公式的计算过程。对多条件嵌套公式来说,这个功能能直接看到AND、OR每轮算出来是TRUE还是FALSE,比对着公式猜快得多。

也可以用F9查看选中片段的即时结果,但一定要记住看完按Esc。这两个工具结合起来,基本能把嵌套逻辑里的问题定位到具体某一层。

5.2 常见错误值对照表

现象可能原因处理方式
#NAME?函数名拼错,或者文本条件缺少英文双引号检查函数名和字符串引号
#VALUE!比较的单元格里是文本,或混合了错误值检查单元格数据类型
结果全是0条件区间写反,或者数字被存成了文本检查运算符和数据类型
结果全部是“不满足”条件判断方向反了检查>=、<=是否写反
公式显示为文本公式前有空格、单引号,或括号是中文括号重新输入公式

5.3 排查顺序:从外到内,从数据到公式

遇到多条件判断结果不对,我一般按下面顺序来:

  1. 看结果是什么:是错误值、固定值,还是和预期相反;
  2. 看公式是否被当成文本:单元格左上角有没有绿色三角,公式栏里有没有多余字符;
  3. 看括号数量:数开括号和闭括号是否一致;
  4. 看条件引用的单元格:值是不是文本型数字,空格、换行符会不会干扰判断;
  5. 看比较方向:>=、<=、=是否符合业务要求;
  6. 看AND、OR位置:有没有把逻辑关系反过来。

实际排查时,前两步排除了,问题基本就定位在数据格式和逻辑方向上。不要一上来就怀疑函数不支持,大多数多条件判断问题都出在输入和格式上。

5.4 下拉填充后结果不对怎么办

如果第一行公式正确,下拉之后后面的行结果错乱,重点检查引用方式。同行内比较通常B2、C2这种相对引用没问题;如果公式里引用了另一个固定单元格,比如固定目标值放在F1单元格,下拉时必须写成$F$1,否则每一行都会往下偏移一格。

绝对引用和相对引用用错,最容易造成“第一行对、后面全错”的情况。检查时点开几个出错行的公式,逐个看引用单元格是不是已经跑偏了。

6. 职场建议:公式不是越长越好

6.1 复杂逻辑先拆辅助列

一个公式里嵌套四五个函数,看起来能力很强,但维护和复核的人会非常痛苦。如果条件超过两三个,我建议先在旁边加辅助列,把条件判断拆开。比如先建一列“业绩是否达标”:=IF(B2>=10000, 1, 0);再建一列“出勤是否达标”:=IF(C2>=22, 1, 0);最后主判断列写:=IF(AND(D2=1, E2=1), 2000, 0)

辅助列的好处是每一步都看得见,出错时能立刻知道是哪一段条件不对。很多公司报表审核时也更容易接受辅助列,而不是一个几百字符的长公式。确认逻辑没问题后,可以把辅助列隐藏,或者粘贴成数值,不影响使用。

6.2 新版Excel可以试试IFS函数

如果Excel版本支持IFS函数,多档位判断可以写得更简洁:

=IFS(A2>=20000, "高", A2>=10000, "中", TRUE, "低")

IFS会按顺序判断,遇到第一个满足条件就返回对应值。最后一个条件写TRUE,相当于兜底。需要注意IFS在Excel 2019、Office 365以及较新的WPS版本里才可用,旧版本会把IFS识别为#NAME?错误。落地之前先确认同事的版本,别写完了发过去打不开。

6.3 多条件统计场景用COUNTIFS、SUMIFS更合适

有些需求看起来像多条件判断,实际是多条件统计。比如“统计业绩达标且出勤达标的人数”,如果用IF嵌套会先加一列标记再计数,效率低。直接用COUNTIFS:

=COUNTIFS(B2:B100, ">=10000", C2:C100, ">=22")

类似的,汇总满足多个条件的金额可以用SUMIFS。选函数前先想清楚目标:如果是要给每一行贴标签,用IF、AND、OR;如果是要做汇总统计,用COUNTIFS、SUMIFS这类自带范围筛选的函数更合适。

6.4 阈值经常变动时,把条件写成单元格引用

判断条件里的阈值,比如10000、22、0.95,尽量不要直接写在公式里。把它们放到单元格里,比如F1放业绩阈值、F2放考勤阈值,公式写成:

=IF(AND(B2>=$F$1, C2>=$F$2), 2000, 0)

这样下个月调整标准时,只改单元格里的数值,不用改公式。公司制度经常变动,把阈值外置是减少维护成本最实际的办法。做报表的人最怕的就是每个月翻公式改数字,改成单元格引用以后,交接成本也会低很多。

IF、AND、OR这套组合,关键不在于会写多少个嵌套,而在于先把业务条件翻译成清晰逻辑:哪些条件是“并且”,哪些是“或者”,判断顺序是从高到低还是从小到大。先把小样例跑通,再往整张报表套。多条件判断出问题时,也先从数据和逻辑方向排查,别急着把函数换成更复杂的版本。

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

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

立即咨询