Menu

Excel AND、OR 和 NOT 函数与 IF 搭配:示例

=AND(B2>=10,B2<=20) 只有在所有条件都成立时才返回 TRUE,而 =OR(B2="North",B2="South") 只要有一个条件成立就返回 TRUE。本文讲解 AND、OR、NOT 和 XOR 的单独用法及在 IF 中的用法,如何判断数字是否在两个值之间,以及如何在数组公式中表示 AND 和 OR。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=AND(B2>=50,C2>=50) 只有在两个条件都成立时才返回 TRUE。=OR(B2>=50,C2>=50) 只要至少有一个成立就返回 TRUE。放进 IF 中,它们能把两个条件合成一个判断:=IF(AND(B2>=50,C2>=50),"Pass","Fail")。

两部分都通过,或任一部分通过
D2
ABCDE
1StudentExamProjectBoth 50+Either 50+
2Ana7264PassPass
3Ben4580FailPass
4Chloe5851PassPass
5Dan3842FailFail
6Eve9147FailPass
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

Ben 和 Eve 一部分通过、另一部分没通过,所以他们在 D 列(AND)中不及格,在 E 列(OR)中及格。Dan 两部分都没通过,两列都不及格。把 B3 中 Ben 的考试成绩改成 55,他在 D 列也会及格。

AND 函数

=AND(logical1, [logical2], ...)

AND 最多接受 255 个条件,只有当每个条件都为 TRUE 时才返回 TRUE。只要有一个 FALSE,结果就是 FALSE。单独使用时,AND 在单元格中显示 TRUE 或 FALSE;放在 IF 中,它决定 IF 返回哪个结果。

判断数字是否在两个值之间

Excel 没有 BETWEEN 函数。用 AND 加上下限和上限来判断:

温度在范围内吗?
C2
ABCD
1SampleTempBetween 10 and 20Status
2S114TRUEOK
3S222FALSECheck
4S310TRUEOK
5S47FALSECheck
6S520TRUEOK
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

S3 和 S5 正好落在边界上,算作在范围内,因为判断用的是 >= 和 <=。要排除边界,就用 > 和 <。把边界放在单元格中,写成 =AND(B2>=$F$1,B2<=$F$2),修改范围时就不用改公式。像 10<=B2<=20 这样的判断在 Excel 中行不通:它先算出 10<=B2(TRUE 或 FALSE),再把结果和 20 比较,而 Excel 认为 TRUE 和 FALSE 比任何数字都大,所以结果总是 FALSE。

OR 函数

=OR(logical1, [logical2], ...)

只要至少有一个条件为 TRUE,OR 就返回 TRUE;只有所有条件都为 FALSE 时才返回 FALSE。它是接受多个文本值的常用方法:

按区域划分配送区
C2
ABC
1OrderRegionZone
21001NorthZone 1
31002EastZone 2
41003SouthZone 1
51004WestZone 2
61005southZone 1
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

文本比较不区分大小写,所以小写的 south 也会归入 Zone 1。如果可接受的值很多,=OR(B2={"North","South","Central"}) 会一次性把 B2 和数组常量中的每一项进行比较。

NOT 和 XOR

NOT 把逻辑值取反:=NOT(TRUE) 是 FALSE。当你手上的条件正好和想要的相反时,用它读起来很顺:=IF(NOT(C2="Done"),"Follow up","") 和 =IF(C2<>"Done","Follow up","") 效果相同。

XOR 从 Excel 2013 开始提供,表示“异或”:有两个条件时,恰好一个为 TRUE 时返回 TRUE,两个都为 TRUE 或都为 FALSE 时返回 FALSE。条件更多时,为 TRUE 的条件个数是奇数时返回 TRUE。

NOT 和 XOR
D2
ABCDE
1TaskOwnerStatusOpenOne check only
2ReportAnaDoneFALSEFALSE
3BudgetBenOpenTRUEFALSE
4SlidesAnaOpenTRUETRUE
5SurveyBenDoneFALSETRUE
6PlanAnaDoneFALSEFALSE
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

E 列对 Slides(是 Ana 但不是 Done)和 Survey(是 Done 但不是 Ana)为 TRUE,对两个条件都满足或都不满足的行为 FALSE。

AND 和 OR 一起使用

条件可以嵌套:AND 放在 OR 里,或者 OR 放在 AND 里。销售代表在 North 区域,并且销售额超过 1,000 或签下了新客户时,就能拿到奖金:

奖金规则
E2
ABCDE
1RepRegionSalesNew clientBonus
2AnaNorth1200NoBonus
3BenNorth700YesBonus
4ChloeSouth1500Yes
5DanNorth900No
6EveNorth1100YesBonus
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

Ana(销售额)、Ben(新客户)和 Eve(两者都满足)拿到奖金。Chloe 满足 OR 部分,但她在 South 区域;Dan 在 North 区域,但两个 OR 条件都不满足。

练习:免运费

免运费
D2
ABCD
1OrderTotalMemberShipping
2100135Yes
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 D2 中,如果 B2 中的订单总额至少为 50,或者顾客是会员(C2 为 "Yes"),就显示 "Free",否则显示 "Paid"。

数组公式中的 AND 和 OR:用 * 和 +

AND 和 OR 会把传给它们的所有内容归结为一个 TRUE 或 FALSE。在单行中这正是你想要的,但当公式要一次处理整列时就不行了:=AND(B2:B6="North",C2:C6>100) 对五行一起只返回一个值。在数组公式(FILTER、SUMPRODUCT、对条件求 SUM)中,把每个条件写在括号里,AND 用相乘,OR 用相加。TRUE 按 1 计算,FALSE 按 0 计算,所以只有两个条件都成立时乘积才是 1,而只要任一条件成立,和就至少为 1。

用 * 和 + 计数
F2
ABCDEF
1RepRegionSalesCount
2AnaNorth1200North and over 1,0002
3BenSouth700North or over 1,0004
4ChloeNorth900
5DanSouth1500
6EveNorth1100
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

F2 统计出 2 行(Ana 和 Eve),F3 统计出 4 行(除 Ben 以外的所有人)。在 F3 中,>0 很关键:同时满足两个条件的行相加得 2,而这个比较会把任何大于 0 的和都变成一个 TRUE。同样的写法也能筛选行,=FILTER(A2:C6,(B2:B6="North")*(C2:C6>1000));如果只是按 AND 逻辑计数,COUNTIFS 不用数组就能做到:=COUNTIFS(B2:B6,"North",C2:C6,">1000"),见 COUNTIFS 页面。

常见问题

如何在 Excel 中把 IF 和 AND 搭配使用?

把 AND 放进 IF 的判断条件中:=IF(AND(B2>=50,C2>=50),"Pass","Fail")。只有当 B2 和 C2 都大于或等于 50 时,结果才是 Pass。

如何在 Excel 中判断一个数字是否在两个值之间?

用 AND 加两个比较:=AND(B2>=10,B2<=20) 对 10 到 20 之间(含两端)的任何值都返回 TRUE。放进 IF 中:=IF(AND(B2>=10,B2<=20),"In range","Out of range")。

Excel 中 AND 和 OR 有什么区别?

AND 只有在所有条件都为 TRUE 时才返回 TRUE。OR 只要至少有一个条件为 TRUE 就返回 TRUE。=AND(TRUE,FALSE) 是 FALSE,=OR(TRUE,FALSE) 是 TRUE。

为什么 AND 在我的 FILTER 或 SUMPRODUCT 公式中不起作用?

AND 和 OR 会把整个区域归结为一个 TRUE 或 FALSE,而不是每行一个。在数组公式中,AND 用条件相乘表示,(B2:B6="North")*(C2:C6>100),OR 用条件相加表示。

可以在同一个公式中同时使用 AND 和 OR 吗?

可以,把一个嵌套在另一个里面:=IF(AND(B2="North",OR(C2>1000,D2="Yes")),"Bonus","") 要求区域是 North,并且销售额超过 1000 或 D2 中是 Yes。

Coddy 编程语言插图

和 Coddy 一起学编程

开始