ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8823|回复: 5

[分享] 正视 + 、* 与逻辑函数OR、AND 的区别

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-5-7 11:35 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 Excel2119 于 2015-5-7 11:46 编辑


特别声明:本文来自 image002.png (http://surda.cn) 作者:Surda      发布时间:2010年10月10日


       先看看下面这个说法“*” 相当于AND “+” 相当于OR。这是一些论坛中常见的回答,我到如今为止也这样解答了不少朋友的疑问。结论正确么?难道Excel中的“*”和“+”有两层含义?――严格的说,这是不正确的!
       因此,已受误导了朋友,如果你曾经在某论坛中得到过我这样的解答,那就此纠正这种说法了。
       更严谨一些说:“*”“+”可以模拟ANDOR
       让我们先来看看为什么要模拟AND和OR,而不用Excel函数AND()、OR()?
       建立如下图的工作表,分别在D11、D12中输入如下公式,并按Ctrl+Shift+Enter结束公式输入。
       =SUM(IF(AND(C2:C7=D9,D2:D7=D10),E2:E7))
       =SUM(IF((C2:C7=D9)*(D2:D7=D10),E2:E7))
image003.jpg
                    (P-1-1)
       之所以创建以上公式,是因为我想对满足【Product ID】为D9,【City】为D10的记录进行汇总。很明显,从上面的返回结果表明D11中的结果是正确的,而D10中的结果是错误的。为什么会是这样呢?
       在接下来的演示中通过讲述AND()和OR()函数的工作原理来解释为什么D10中的公式返回了错误的结果,以及演示为什么D11中的公式可以神奇般的得到结果。
       选中在上面工作表的G2:G7,输入=OR(C2:C7=D9,D2:D7=D10),按Ctrl+Shift+Enter;选中H2:H7,输入=AND(C2:C7=D9,D2:D7=D10),按Ctrl+Shift+Enter。怎么G2:G7都是TRUE;而H2:H7都是FALSE?实际我们想要的是(P-1-2)中的结果。
image004.jpg                 image005.jpg


秘密就是:G2:G7中的公式相当于                                               (P-1-2)
       =OR(C2=D9,C3=D9,C4=D9,C5=D9,C6=D9,C7=D9,D2=D10,D3=D10,D4=D10,D5=D10,D6=D10,D7=D10
这回知道原因了吧?
       =OR(C2:C7=D9,D2:D7=D10)返回的结果只有一个,而不是七个!同理,AND()函数类似。不信,你可以更改数据表中的一些数据来进行验证。
诚然(P-1-2)返回结果是 1 、 0 形式,公式为:
        G2=(C2:C7=D9)*(D2:D7=D10)  按Ctrl+Shift+Enter
这就是用“+”“*”模拟ANDOR函数的妙用
       其原理是?逻辑是?这都归结于FALSE和TRUE。都知道:“在Excel算术运算中,TRUE和FALSE转换为整型后的值分别为1和0。”
image006.jpg
                (P-1-3)
       从上图中很容易看出,对于“乘”操作,只有TRUE*TRUE才会返回1(TRUE),因此“*”模拟了AND的效果;对于“加”操作,只有FALSE+FALSE才会返回0(FALSE),因此“+”模拟了OR的效果。
注:Excel中对条件真假的判断是这样,当条件的值为0时,认为是假;否则,全部认为是真。条件的数据类型一定是数值。比如“=IF(-3,1,0)”返回1。因此“+”的操作做到了模拟OR的效果。




TA的精华主题

TA的得分主题

发表于 2015-7-2 14:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢楼主分享

TA的精华主题

TA的得分主题

发表于 2015-7-11 23:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请教一下,我们什么时候用+-什么时候用OR和AND呢?

TA的精华主题

TA的得分主题

发表于 2015-7-12 09:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-1-13 11:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-1-13 11:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=SUM(IF(AND(C2:C7=D9,D2:D7=D10),E2:E7))
      根据与计算原则,就不可简单写成:
=SUM(IF((C2:C7=D9)*(D2:D7=D10),E2:E7))
   而必须写成:
=SUM(IF((C2=D9)*(C3=D9)*(C4=D9)*(C5=D9)*(C6=D9)*(c7=D10)* (d2=d10)*(d3=D10)*(d4=D10)*(d5=D10)*(d6=10)*(d7=D10),e2:e7)
这就是个局部与全局的关系。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-23 15:58 , Processed in 0.030773 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表