前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >精通Excel数组公式012:布尔逻辑:AND和OR

精通Excel数组公式012:布尔逻辑:AND和OR

作者头像
fanjy
发布于 2021-01-20 03:32:40
发布于 2021-01-20 03:32:40
2.4K0
举报
文章被收录于专栏:完美Excel完美Excel

导言:本文为《精通Excel数组公式(学习笔记版)》中的一部分内容节选。

布尔(Boolean)是一种数据类型,仅有两个值,即TRUE或FALSE,或者1或0:

TRUE = 1

FALSE = 0

在Excel公式中,经常要用到逻辑条件。对于AND条件来说,只有所有的逻辑测试都为TRUE时,结果才为TRUE;对于OR条件来说,只要有一个逻辑测试为TRUE,结果就是TRUE。下图1列出了3个条件时的所有逻辑测试。

图1

AND条件

当执行AND逻辑测试时,所有的测试都必须为TRUE,最终的AND逻辑测试结果才是TRUE。如果任何一个逻辑测试为FALSE,AND逻辑测试的结果为FALSE。

下面展示了一些AND条件的示例。

图2:公式[1]至[4]使用了AND条件。公式[5]使用布尔乘法的AND条件。公式[6]使用布尔乘法和除法的AND条件。公式[7]使用IF函数和布尔AND条件。

图3:带筛选的数据透视表执行AND条件的求和运算。

图4:具有已应用筛选和总计行的表功能可以使用AND条件进行平均值计算。

图5:筛选功能可以使用AND条件筛选表。

图6:高级筛选功能可以使用AND条件提取记录。

图7:在辅助列中使用了带有4个逻辑测试的AND函数。

图8:使用逻辑测试相乘来创建布尔辅助列。

正如在上述例子中所看到的,诸如像SUMIFS函数、使用布尔运算或IF函数的数组公式、数据透视表、带有筛选和汇总行的表、筛选、高级筛选、以及辅助列解决方法都可以使用AND条件运算。

OR条件

当执行OR逻辑测试时,只要有一个测试为TRUE,最终的OR逻辑测试结果就是TRUE。只有当所有的逻辑测试都为FALSE时,OR逻辑测试的结果才为FALSE。我们经常使用“至少有一个”和“一个或多个”逻辑测试来描述OR逻辑测试。

下面是两个OR条件的示例。

图9:单元格中的姓名是否是“Gidget”或“Rodger”。

图10:测试客户的净资产大于100000,或者信用评级大于或等于3.5。

上图10所示的例子中,OR条件测试获得了两个TRUE值,此时必须小心,特别是使用其作为另一公式的元素时。

1.OR逻辑测试结果为1个TRUE值:通常指向单个单元格且遍历单列。

2.OR逻辑测试结果多于1个TRUE值:通常指向不同的单元格且遍历多列。

示例:使用不能返回多个TRUE值的OR逻辑测试统计

如下图11所示,使用了5个公式分别统计满足条件的项目数量。

图11:OR条件统计在单个单元格且单列中查找。

示例:使用返回多个TRUE值的OR逻辑测试统计

如下图12所示,如果在创建OR条件公式时不细心,那么可能会统计两次。示例统计净资产大于100000或者信用评级大于等于3.5的客户数。因为两个问题在两列中查询,对于特定的客户可能会返回两个TRUE值,导致该客户被统计两次,例如Fruits Inc.的净资产大于100000且信用评级大于等于3.5,在公式[4]和[5]中对该公司统计了两次,返回不正确的结果。而公式[1]、[2]和[3]只统计一次,返回正确的结果。

图12:OR逻辑测试指向两个不同的单元格,因此可能返回两个TRUE值;OR条件统计公式查找两列。

用于求和、求平均值和查找最小或最大值的OR条件

示例如下图13至图15所示。

图13:使用应用到单列的OR条件来求和和求平均值。

图14:使用应用到不同列的OR条件来求和和求平均值。单个的OR逻辑测试可能产生多个TRUE值。

图15:使用应用到不同列的OR条件来求最小值和最大值。单个的OR逻辑测试可能产生多个TRUE值。在AGGREGATE函数的公式中,使用除法剔除0值。

在公式中同时使用AND条件和OR条件:OR逻辑测试不会返回多个TRUE值

当在公式中同时使用AND条件和OR条件时,仍然取决于OR逻辑测试是否返回多个TRUE值。

如下图16所示,求区域West和Midwest在2019年3月18日和2019年5月12日之间的数量、营业额之和、最小营业额和平均营业额。

图16:AND和OR条件,此时OR逻辑测试指向单列。

在公式中同时使用AND条件和OR条件:OR逻辑测试会返回多个TRUE值

如下图17所示,求净资产大于100000,净收入大于等于37500,信用评级1大于等于3.5或信用评级2大于等于6的客户数、最大净资产和平均净资产。

图17:AND和OR条件,此时OR逻辑测试指向多列。

注:如果有多个OR条件,可以使用ISNUMBER函数和MATCH函数的组合。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Swift入门:协议扩展
Swift最强大的功能之一就是能够同时扩展整个数据类型。 这被称为协议扩展,它们通常用于在大型应用程序中构建灵活性。
韦弦zhy
2020/03/19
8490
Swift入门:结构体
结构体是复杂的数据类型,这意味着它们由多个值组成。然后创建结构的实例并填充其值,然后可以在代码中将其作为单个值传递。例如,我们可以定义一个Person结构体类型,它包含两个属性:clothes和shoes:
韦弦zhy
2020/03/19
4500
Swift — 协议(Protocol)
协议定义了一个蓝图,规定了用来实现某一特定任务或者功能的方法、属性,以及其他需要的东西。类、结构体和枚举都可以遵循协议,并为协议定义的这些要求提供具体实现。某个类型能够满足某个协议的要求,就可以说该类型遵循这个协议。
Swift社区
2021/11/26
1.1K0
Swift — 协议(Protocol)
Swift基础 协议
翻译自:https://docs.swift.org/swift-book/LanguageGuide/Protocols.html
郭顺发
2023/07/17
1590
Swift 中的抽象类型和方法
在面向对象的编程中,抽象类型提供了一个基础实现,其他类型可以从中继承,以获得某种共享的、共同的功能。抽象类型与普通类型的区别在于,它们永远不会被当作原样使用(事实上,一些编程语言甚至阻止抽象类型被直接实例化),因为它们的唯一目的是作为一组相关类型的共同父类。
韦弦zhy
2022/03/30
8260
Swift入门:扩展
扩展允许我们以一种非常干净的方式修改Swift的数据类型以添加新的功能——我们的新代码与现有代码没有区别。
韦弦zhy
2020/03/19
1.1K0
20.Swift学习之协议
协议为方法、属性、以及其他特定的任务需求或功能定义一个大致的框架。协议可被类、结构体、或枚举类型采纳以提供所需功能的具体实现。满足了协议中需求的任意类型都叫做遵循了该协议。
YungFan
2018/12/12
3240
Swift入门: 数组
数组允许您将许多值组合到一个集合中,然后根据它们在集合中的位置访问这些值。Swift使用类型推断来确定数组保存的数据类型,如下所示:
韦弦zhy
2020/03/19
7780
Swift 5.1 中引入的部分有用的新特性
Swift 5.1现在已经正式发布,尽管只是次要版本,它包含了大量的更改和改进。从基本的新功能,例如模块稳定性(使SDK供应商可以交付预编译的Swift框架)到所有SwiftUI以及其他功能的新语法功能。
韦弦zhy
2020/02/18
1.4K0
Swift 5.1 中引入的部分有用的新特性
Swift入门: 函数
函数使您可以定义执行特定功能的可重用代码段。通常,函数能够接收一些值来修改其工作方式,但这不是必需的。
韦弦zhy
2020/03/19
7490
Swift入门:枚举
枚举(Enumerations)通常称为“ enum”,发音为“ ee-num”,是一种在Swift中定义自己的值的方法。在某些编程语言中,它们只是简单的小事,但是Swift给它们增加了巨大的功能。
韦弦zhy
2020/03/20
7860
Swift入门:枚举
Swift 中的反射 Mirror
前言 Mirror是Swift中的反射机制,对于C#和Java开发人员来说,应该很熟悉反射这个概念。反射就是可以动态的获取类型以及成员信息,同时也可以在运行时动态的调用方法和属性等。
Swift社区
2021/11/26
5.1K0
Swift 中的反射 Mirror
Swift 中的 Sendable 和 @Sendable 闭包
Sendable 和 @Sendable 是 Swift 5.5 中的并发修改的一部分,解决了结构化的并发结构体和执行者消息之间传递的类型检查的挑战性问题。
韦弦zhy
2022/11/14
1.5K0
Swift 中的 Sendable 和 @Sendable 闭包
Swift 5.6到5.10新特性整理
当你编写涉及共享状态的代码时,如果你不确保这个共享状态在跨线程使用时是安全的,你就会在许多地方遇到数据竞争的问题。
小刀c
2024/04/03
2.2K0
Swift 5.6到5.10新特性整理
Swift入门:属性
结构体和类(统称为“类型”)可以有自己的变量和常量,这些称为属性。这些方法允许您将值附加到类型以唯一地表示它们,但因为类型也可以有方法,所以您可以让它们根据自己的数据进行操作。
韦弦zhy
2020/03/19
5850
Swift 3到5.1新特性整理
Swift 5.0 最重要的自然是ABI Stability, 对此可以看这篇 Swift ABI 稳定对我们到底意味着什么 。
小刀c
2022/08/16
4.8K0
Swift 3到5.1新特性整理
Swift入门:类
Swift有另一种方法来构建称为类的复杂数据类型。它们看起来类似于结构体,但有许多重要的区别,包括:
韦弦zhy
2020/03/19
7610
Swift学习:协议
本篇将详细总结介绍Swift协议的用法; 协议是定义一些规范(属性、功能方法),然后由类、结构体或者枚举遵循并实现这些规范,这一过程被称为遵循了协议。
梧雨北辰
2018/08/09
4920
Swift入门:静态属性和方法
在Swift中,您可以创建属于类型而不是类型实例的属性和方法。这有助于通过存储共享数据来有意义地组织数据。
韦弦zhy
2020/03/19
1.3K0
Swift入门:多态性与类型转换
因为类可以相互继承(例如CountrySinger可以从Singer继承),这意味着一个类实际上是另一个类的超集:B类拥有A类所拥有的所有东西,还有一些额外的东西。这反过来意味着你可以把B当作B型或者A型,这取决于你的需要。
韦弦zhy
2020/03/19
9620
相关推荐
Swift入门:协议扩展
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文