本帖最后由 Excel2119 于 2015-5-7 11:46 编辑
先看看下面这个说法:“*” 相当于AND, “+” 相当于OR。这是一些论坛中常见的回答,我到如今为止也这样解答了不少朋友的疑问。结论正确么?难道Excel中的“*”和“+”有两层含义?――严格的说,这是不正确的! 因此,已受误导了朋友,如果你曾经在某论坛中得到过我这样的解答,那就此纠正这种说法了。 更严谨一些说:“*”和“+”可以模拟AND和OR。 让我们先来看看为什么要模拟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)) (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)中的结果。
秘密就是: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 这就是用“+”、“*”模拟AND和OR函数的妙用。 其原理是?逻辑是?这都归结于FALSE和TRUE。都知道:“在Excel算术运算中,TRUE和FALSE转换为整型后的值分别为1和0。” (P-1-3) 从上图中很容易看出,对于“乘”操作,只有TRUE*TRUE才会返回1(TRUE),因此“*”模拟了AND的效果;对于“加”操作,只有FALSE+FALSE才会返回0(FALSE),因此“+”模拟了OR的效果。 注:Excel中对条件真假的判断是这样,当条件的值为0时,认为是假;否则,全部认为是真。条件的数据类型一定是数值。比如“=IF(-3,1,0)”返回1。因此“+”的操作做到了模拟OR的效果。
|