前面的文章已经讨论了三种基本的数据类型处理,分别是数字、文本和日期时间,本文将讨论另一种常用的数据类型,逻辑型(LOGICAL)数据的处理及其在条件判断中的应用。逻辑型在一些环境下也称为布尔类型。
逻辑型数据只有两个值,即TRUE(真)和FALSE(假)。其运算也比较简单,常用的运算包括:
下图中给出的这四种逻辑运算的运算规则,编辑栏显示了与运算AND()函数的使用方法,即A2和B2单元格的数据进行与运算,公式为“=AND(A2,B2)”。
使用AND()、OR()、NOT()、XOR()函数进行逻辑运算时还需要注意,数值型数据也可以参与逻辑运算,其中,0会视作FALSE值,非0值视作TRUE值,如下图所示。
请注意1和2的异或运算,1和2进行逻辑运算前都会自动转换为逻辑型,它们都会当作TRUE值来运算,所以异或运算结果为FALSE值。一些函数中的参数需要逻辑型数据,实际应用中可以使用0和1简化参数输入,函数也可以正常工作。
如果将逻辑类型的数据当作数值处理,则TRUE会自动转换为1,FALSE会自动转换为0。如TRUE+FALSE等于1。
比较运算用于判断两个数据的关系,关系成立时返回TRUE,不成立时返回FALSE。Excel公式中可以使用的比较运算包括:
虽然比较运算在数值数据上应用较大,但在经常用于比较两个文本的内容是否相同。应注意,使用=运算符比较文本内容是否相同时不区分字母大小写,如果需要严格区分大小写,可以使用EXACT()函数。如A1有文本ABC,B1有文本abc,则A1=B1返回TRUE,而EXACT(A1,B1) 返回FALSE。
日期和时间的比较运算更多的是判断哪个时间较早或哪个时间较晚。
使用比较运算可以进行简单的条件判断,而逻辑运算和条件组合还可以进行更复杂的条件判断,如判断年份是否为闰年。假如A1单元格保存了年份信息,而可以通过公式“=OR(MOD(A1,400)=0,AND(MOD(A1,100)<>0,MOD(A1,4)=0))”计算是否闰年,是闰年时显示TRUE,否则显示FALSE。下图中给出了闰年判断条件的分解。
如图中所示,某个年份是闰年时有两种情况,只要满足其中一个条件就是闰年,这两个条件使用最外层的OR()函数来确定,第一个条件是年份能被400整除即是闰年,如2000是闰年,而1900和2100年不是闰年,这里使用MOD()函数计算年份除以400的余数。第二个条件是一个复合条件,需要同时满足时才是闰年,使用AND()函数确定,其中条件一是年份不能被100整除,即年份除以100的余数不是0,条件二是年份能够被4整除。
确定条件后,就可以根据条件是否成立分别处理不同的情况,先来看IF()函数的应用,它需要三个参数,如IF(条件,成立时返回值,不成立时返回值)。如A1单元格有年份值,可以通过公式“=IF(OR(MOD(A1,400)=0,AND(MOD(A1,100)<>0,MOD(A1,4)=0)),"是闰年","不是闰年")”判断A1单元格数据是否为闰年,并分别显示“是闰年”和“不是闰年”的信息,如2000显示“是闰年",1900显示“不是闰年”。
最后再来看几个IF家族的函数。首先是IFNA()函数,参数1指定需要判断的值,当参数1的值是#N/A错误,即找不到所需要的值时返回参数2的内容;否则返回参数1的值。
IFERROR()函数,当参数1是#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、 #NULL!错误中的一个时返回参数2的内容;否则返回参数1的值。如IFERROR(1/0,"无法计算")中参数1会产生除0错误,所以公式会显示“无法计算”,而IFERROR(1/2,"无法计算")会返回参数1的计算结果0.5。
IFS()函数是Excel2019中增加的函数,用于判断是否满足多个条件,帮助文档中给出的定义是“IFS(Something is True1, Value if True1,Something is True2,Value if True2,Something is True3,Value if True3)”。IFS()函数最后可以设置127个条件,参数以两个为一组,每组中的前一个设置条件,后一个是条件成立时返回的数据。第1组的条件不成立时会判断第2个条件,第2个条件不成立时会判断第3个条件,以此类推;当一个条件满足后即结束运行并返回对应的数据。如果所有条件都不满足,则返回#N/A错误。
下面使用IFS()函数来对分数进行分级,假如A列有如下图所示的分数。
接下来在B2单元格输入公式“=IFS(A2>=90,"A",A2>=80,"B",A2>=70,"C",A2>=60,"D",A2<60,"F")”,可以看到,公式中设置的条件是分数大于等于90为A级,否则大于等于80为B级,否则大于等于70为C级,否则大于等于60为D级,否则小于60为F级。B2单元格向下复制公式后结果如下图所示。
请注意,在使用IFS()函数时,条件的顺序很重要,如本例就是从分数从高到低进行判断。实际应用中,如果需要多个条件,无论是使用IF()函数,IFS()函数,或是多种条件函数的组合使用,都应仔细分析条件之间的关系,以便能够正确地写出符合要求的执行逻辑。