用AND函数、OR函数和NOT函数判断真假
AND函数对应逻辑关系“与”。当所有参数为逻辑值TRUE时,结果返回TRUE,只要有一个参数为逻辑值FALSE,结果返回FALSE。
OR函数对应逻辑关系“或”。只要有一个参数为逻辑值TRUE,结果就返回TRUE。只有当所有参数均为逻辑值FALSE时,才会返回FALSE。
NOT函数对应链接关系“非”。用于对参数的逻辑值求反,当参数为TRUE时返回FALSE,参数为逻辑值FALSE时返回TRUE。
示例:使用AND函数和OR函数进行多条件判断
图14-1所示是某公司各代理商在2019和2020两个年度的销量汇总,使用AND函数可以判断两个年度销量是否均高于35000。
图14-1销量汇总表
F2单元格输入以下公式,向下复制到F10单元格。=AND(D2>35000,E2>35000)
先使用D2>35000和E2>35000分别对比两个年度的销量是否大于35000,然后使用AND函数对两个条件返回的结果进一步判断。如果两个条件对比后都返回TRUE,AND函数才会返回TRUE,表示两个条件同时符合。只要有一个条件对比后返回FALSE,AND函数即返回逻辑值FALSE。
如果要判断是否有任意一个年度的销量大于35000,可以在G2单元格输入以下公式,向下复制到G10单元格。
=OR(D2>35000,E2>35000)
先分别对比两个年度的销量是否大于35000,然后使用OR函数对两个条件返回的结果进行判断。如果任意一个条件对比后返回TRUE,OR函数即返回TRUE,表示两个条件符合其一。只有两个条件对比后都返回FALSE,OR函数才会返回逻辑值FALSE,表示两个条件均不符合。
用乘法、加法替代AND函数和OR函数
在实际运用中,常用乘法代替AND函数,用加法代替OR函数。
乘法运算与AND函数的逻辑关系相同,只要有一个乘数为0,结果就等于0。只有当所有乘数都不等于0时,结果才不等于0。
加法运算与OR函数的逻辑关系相同,只要有一个加数不为0,结果就不等于0。只有当所有加数都为0时,结果才是0。
仍以示例14-1中的数据为例,需要计算代理商的年终返利。假设在两个年度销量均高于35000时返回1000,否则返回0,使用乘法替代AND函数的公式为:
=(D2>35000)*(E2>35000)*1000
假设在任意一个年度销量高于35000时返回1000,否则返回0,使用加法替代OR函数的公式为:
=((D2>35000) (E2>35000))*1000
认识IF函数
使用AND或OR函数虽然能对多个条件进行判断,但是只能返回逻辑值TRUE或FALSE,如果要根据不同的判断结果返回指定的内容或是执行某项计算,可以借助IF函数来实现。
ÂI简单的IF函数用法
IF函数的语法为:IF(logical_test,value_if_true,value_if_false)
可以理解为:
IF(判断条件,条件成立时返回的值,条件不成立时返回的值)
当第一参数为TRUE或非0数值时,IF函数返回第二参数的值。当第一参数为FALSE或等于0时,则返回第三参数的值。
仍以示例14-1中的数据为例,如果希望在两个年度销量均高于35000时返回“优质客户”,否则返回“普通客户”,可以使用以下公式:=IF(AND(D2>35000,E2>35000),"优质客户","普通客户")
IF函数根据AND函数的结果分别返回不同的内容,当AND函数结果为TRUE时,返回第二参数“优质客户”,当AND函数结果为FALSE时,返回第三参数“普通客户”。
ÂIIIF函数的嵌套使用
IF函数的第二参数和第三参数除了可以使用数值和文字,也可以使用另一个IF函数再次计算,从而实现多条件的判断。
示例:使用IF函数评定门店等级
图14-2展示了某公司各门店销售汇总表的部分内容,需要根据销售金额评定门店等级。评定规则是大于50000为“A”,大于30000为“B”,其他为“C”。
E2单元格输入以下公式,将公式向下复制到E11单元格。=IF(D2>50000,"A",IF(D2>30000,"B","C"))
公式中的“IF(D2>30000,"B","C")”部分,可以看作首个IF函数的第三参数。如果D2单元格中的销售金额大于50000,将返回第二参数“A”。如果不满足该条件,则执行第三参数IF(D2>30000,"B","C"),继续判断D2是否大于30000,满足该条件时返回“B”,否则返回“C”。
使用IF函数按不同数值区间进行嵌套判断时,需要注意区段划分的完整性,各个判断条件之间不能有冲突。可以先判断是否小于条件中的最小标准值,然后逐层判断,最后是判断是否小于条件中的最大标准值。也可以先判断是否大于条件中的最大标准值,然后逐层判断,最后是判断是否大于条件中的最小标准值。
使用以下公式能够完成同样的计算要求。=IF(D2<=30000,"C",IF(D2<=50000,"B","A"))
用IFS函数实现多条件判断
使用IFS函数可以取代多个嵌套IF语句,在进行多个条件判断时更加方便。函数语法为:
IFS(logical_test1,value_if_true1,[logical_test2,value_if_true2],logical_test3,value_if_true3],…)
logical_test1参数是必需参数,是需要判断的第一个条件。
value_if_true1参数也是必需参数,是在第一参数判断结果为TRUE时要返回的结果。
其他参数为可选参数,两两一组,是需要判断的第2至第127组判断条件和符合判断条件时要返回的结果。将最后一个判断条件的参数设置为TRUE或是不等于0的数值,在不满足其他所有判断条件时能够返回指定的内容。IFS函数的用法可以理解为:
IFS(判断条件1,条件1成立时返回的值,判断条件2,条件2成立时返回的值…)
仍以示例14-2中的数据为例,可以在E2单元格输入以下公式,向下复制到E11单元格,也能够完成门店等级的判断。=IFS(D2>50000,"A",D2>30000,"B",TRUE,"C")
IFS函数对多个条件依次进行判断,如果D2>50000的条件成立,返回指定内容“A”,如果D2>30000的条件成立,返回指定内容“B”,当以上两个条件都不成立时,返回指定内容“C”。
用SWITCH函数进行条件判断
SWITCH函数用于将表达式与参数进行比对,如匹配则返回对应的值,没有参数匹配时返回可选的默认值。函数语法为:=SWITCH(expression,value1,result1,[default_or_value2,result2],...)
如果第一参数的结果与value1相等,则返回result1;如果与value2相等,则返回result2……;如果都不匹配,则返回指定的内容。当不指定内容且无参数可以匹配时,将返回错误值。
示例:用SWITCH函数完成简单的条件判断
在图14-3所示的销售汇总表中,需要根据E列的门店等级,返回对应的拟定措施。等级为“A”时,拟定措施为“重点关注”,等级为“B”时,拟定措施为“加强开发”,其他等级的拟定措施为“跟进升级”。
图14-3用SWITCH函数完成简单的条件判断
F2单元格输入以下公式,向下复制到F11单元格。
=SWITCH(E2,"A","重点关注","B","加强开发","跟进升级")SWITCH函数的第一参数是要判断的单元格,之后是成对的value和result参数,当第一参数等于某个value时,则返回与之对应的result值。最后一个参数作为指定的默认值,在前面的条件都不符合时将返回该结果。
用IFERROR函数屏蔽错误值
IFERROR函数常用于处理公式可能返回的错误值。如果公式的计算结果为错误值,IFERROR函数将返回事先设定的内容,否则返回公式的计算结果。函数语法为:
IFERROR(value,value_if_error)
可以理解为:
=IFERROR(公式,公式结果为错误值时返回的内容)
第一参数是需要检查是否有错误值的公式或单元格引用。
第二参数是公式计算结果为错误值或是单元格中为错误值时要返回的内容,返回的内容可以是数字、文本或是其他公式。能够判断的错误值类型包括#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?和#NULL!。
图14-4所示是某企业订单备货表的部分内容。在G列使用F列的完成吨数除以E列的订单吨数,计算订单完成进度。
由于E4单元格中缺少订单吨数,G4单元格中的公式“=F4/E4”返回了错误值。
图14-4计算订单完成进度
如需将错误值显示为“订单吨数待核”,可以在G2单元格输入以下公式,然后将公式向下复制到G9单元格。
=IFERROR(F2/E2,"订单吨数待核")
提示:IFNA函数也用于屏蔽公式返回的错误值,但是能够判断的错误值类型仅包括#N/A。因此在使用中有一定的局限性。
END