逻辑判断是指有具体意义,并且可以判断真或假的陈述语句,是函数公式的基础,不仅关系到公式的正确与否,也关系到解题思路的简繁,只有逻辑条理清晰,才可以写出简洁有效的公式。常用的逻辑关系有3种,即“与”、“或”、“非”。在本节首先讲解这3种逻辑关系,接着讲解逻辑关系的嵌套和运算。
与(AND关系)
当两个或者多个条件必须同时成立才判定为真时,称判定与条件的关系为逻辑与关系,即平时说的“且”,AND函数常常用于逻辑与关系运算。
例1:用公式表示当A1单元格的值大于0且小于等于10的时候返回TRUE。
=AND(A1>0,A1<=10)
例2:B列是性格,C列是年龄,D列是职务,要在E列中输入公式,筛选出40岁以上的男教授的记录。其中,E1的公式为
=AND(B1="男",C1>40,D1="教授")
或(OR关系)
当两个或多个条件只要有一个成立就判定为真时,称判定与条件的关系为逻辑或关系,OR函数经常用于逻辑或关系运算。
例:A、B、C三列分别是语文、数学、英语成绩,要在D列中输入公式筛选所有不及格的记录(假设60分及格),其中D1的公式为
=OR(A1<60,B1<60,C1<60)
非(NOT关系)
当条件只要成立就判定为假时,称判定与条件的关系为逻辑非关系。NOT函数用于将逻辑值反转。
例:A列存放着人员学历,分为中专、高中、大专、本科、硕士等,现在需要在B列输入公式筛选除硕士以外的记录,其中B1的公式为
=NOT(A1="硕士")
也可以利用下面的公式表示:
=A1<>"硕士"
上面简单介绍了几种逻辑关系,接下来就逻辑关系的嵌套展开论述。
函数IF(logical_test,value_if_true,value_if_false)的第一个参数判定真假,为真返回第2个参数,为假返回第3个参数。如果第2个参数和第3个参数还需要进一步判断,这时新的逻辑判断作为参数嵌套于原有判断,在执行原有判断的基础上进行。
例:A1为成绩,要求用公式在B1返回成绩等级,规则为“成绩低于60分为不及格,60~79分为及格,80~89分为良,90~100分为优”。
1)简单地堆积条件。例如分数在60~79分段时表达为AND(A1>=60,A1<80),其他类似。得到的公式如下所示。
=IF(A1<60,"不及格",IF(AND(A1>=60,A1<80),"及格",IF(AND(A1>=80,A1<90),"良", IF(AND(A1>=90,A1<100),"优"))))
2)归纳整理。如果A1不低于60,即第1个参数为假的同时已经包含“A1>=60为真”的判定了。利用这个逻辑关系的嵌套,正确的公式表达如下:
=IF(A1<60,"不及格",IF(A1<80,"及格",IF(A1<90,"良","优")))
以上介绍了逻辑关系的嵌套,下面讲解逻辑关系的运算等有关技巧。
在实际应用中,逻辑值是可以直接参与函数公式计算的,通常可以看到以下实例的解法。
例1:查找B1在A1:A10数据区域中是否存在的公式1为
=IF(COUNTIF(A1:A10,B1),"存在","")
例2:统计A1:A10数据区域中大于“0”的数值个数的公式2为
=SUM((A1:A10>0)*1)
为什么公式1中IF的条件判断不用“COUNTIF(A1,A10,B1)>0”,而公式2中为什么要在SUM函数中使用“*1”?
为了解释以上问题,先来了解以下几种逻辑值之间的运算结果。
TRUE*1=1*1=1(或TRUE+0=1) FALSE*1=0*1=0(或FALSE +0=1) TRUE+FALSE=1+0=1 TRUE*TRUE=1*1=1 TRUE*FALSE =1*0=0 TRUE+TRUE=1+1=2
根据上面列举的计算准则,以上6项计算简单列举了常用逻辑运算的结果,这也是在数组公式运算中常见的、最常用的理论关系。
了解了以上的运算符,再来看公式1,由于COUNTIF函数统计结果只能为非负数(结果大于或等于0),那么如果B1存在,COUNTIF函数结果必定大于0,否则结果等于0,所以就可以不用添加“>0”进行判断。
而对于公式2,如果SUM函数的参数是数组,而且这个数组是由逻辑值组成,那么要对这些逻辑值求和,就必须先将逻辑值进行运算(*1或者+0),SUM函数才可以正确求和。