IF函数似乎是每个使用Excel的人都必须掌握的函数了,如果连IF函数都不会,真的不好意思说自己会用Excel呢。
不过从平时群里的提问来看,关于IF函数的用法,确实还存在着一些小问题,今天就再来说说IF函数的本质和多个IF嵌套时需要注意的问题吧。
IF函数的本质
在实际使用中,往往需要根据某个判断或者比较得到不同结果,例如:当成绩大于或等于60分时,结果为及格,当成绩小于60分时,结果为不及格。通过比较运算或者判断可以得到一个逻辑值(详见手册第2课),IF函数的功能就是根据逻辑值来得到不同的结果。
IF函数需要三个参数,完整的格式为:
=IF(要判断的条件,条件成立时显示的内容,条件不成立时显示的内容)。
第一参数可以是逻辑值或者是数字,当数字为0时,视为FALSE,当数字非零时,视作TRUE;
第二个和第三个参数可以是任意内容,常量或者公式,当第一个参数为TRUE时,IF得到第二个参数的内容,否则得到第三个参数的内容,如图所示。
IF函数就好像一个假设句,满足某个条件就这样,否则就那样。
例如成绩大于或等于60分为及格,小于60为不及格,这句话我们换成假设句就是:如果成绩大于60,及格,否则不及格。
将这个假设句代入IF函数就是:
IF(成绩大于或等于60,及格,不及格)
假如成绩在A2单元格,公式为:
=IF(A2>=60,”及格”,”不及格”),如 -2所示。
IF函数的本质是按照第一参数设置的条件对数据进行分类。
例如想得到两种结果,及格或不及格,就需要把数据分成两部分,条件可以是A2>=60,也可以是A2<60。
条件不相同时,公式也要做对应的调整,上图中的公式也可以写成:=IF(A2<60,”不及格”,”及格”),如下图所示。
当条件涉及数字的比较时,临界值一定要特别注意,例如:成绩大于60及格,小于60不及格,这样分类就有问题,60分的算及格还是不及格?
两个IF如何嵌套
通常使用一个IF函数可以根据条件得到两种结果,如果需要得到三种结果,例如:成绩大于或等于85为优秀,小于85大于或等于60为合格,小于60为不合格,就需要使用两个IF函数来实现。
对于新手来说,嵌套使用两个IF时经常出错,以下介绍一个能有效避免出错的方法。
还是以三种结果为例,首先简化为两种情况,判断是否及格,优秀也看作是及格,公式为:
=IF(A2>=60,”及格”,”不及格”)
然后再去判断是否为优秀,公式为:
IF(A2>=85,”优秀”,”及格”)
将后面这个IF替换第一个IF的第二参数,完成后的公式为:
=IF(A2>=60,IF(A2>=85,”优秀”,”及格”),”不及格”)
验证这个公式的结果正确,如图所示。
公式=IF(A2<60,”不及格”,IF(A2<85,”及格”,”优秀”))
与公式=IF(A2<60,”不及格”,if(a2>=85,”优秀”,”及格”))都可以达到同样的结果,但后面一个公式看上去总是感觉有点别扭,因为使用了不同的比较运算符,同时返回的三种结果不是按顺序排列的。
在使用多个IF进行嵌套时,尽量使用相同的比较方式,结果也按照升序或者降序排列是一种很好的习惯。
公式=IF(A2>=60,”及格”,IF(A2>=85,”优秀”,”不及格”))表面看上去没什么问题,但是结果总是无法得到“优秀”,如图所示。
这种错误是使用IF嵌套时很容易发生的,原因在于当条件是A2>=60的时候,数据被分成两组,大于或等于60的都是第二参数,小于60的都是第三参数。在这个公式中,第三参数才去判断是否大于或等于90,显然不会有满足条件的结果,所以不可能出现优秀。
这是常犯的一种逻辑顺序错误,可以遵循规律避免错误:用大于号时条件降序,用小于号时条件升序。意思是使用“>”或“>=”比较时,条件按85→60递减的顺序;使用“<”或“<=”比较时,条件按60→85递增的顺序。
提示:使用多层IF嵌套时,要求有非常清晰的逻辑,此时往往需要转换思路,用其他函数取代多个IF嵌套的公式,后文在介绍相关函数时会有对应的案例。