例一:
value_if_true和value_if_false有一个为常量,另一个为嵌套函数。
如图3,用IF公式求出,如果成绩在90分以上(含90分),结果为优秀;成绩在75分以上(含70分),结果为良好;成绩在60分以上(含60分),结果为及格;否则(60分以下),结果为不及格。
公式1:
=IF(B2>=90,"优秀",IF(B2>=75,"良好",IF(B2>=60,"及格","不及格")))
先判断B2是否>=90,如果条件成立,结果返回“优秀”,如果条件不成立,结果返回参数value_if_false :IF(B2>=75,"良好",IF(B2>=60,"及格","不及格"))的结果,这也是一个IF函数(嵌套函数),再判断B2是否>=75,如果条件成立,结果返回“良好”,如果不成立,再判断B2是否>=60,如果条件成立,结果返回“及格”,否则返回“不及格”,至此,判断结束。
公式2:
=IF(B2>=60,IF(B2>=75,IF(B2>=90,"优秀","良好"),"及格"),"不及格")
这个公式是从小到大依次往上判断,先判断B2>=60是否成立,如果条件成立,返回参数value_if_true: IF(B2>=75,IF(B2>=90,"优秀","良好"),"及格"),进行再次判断,如果条件不成立,直接返回参数value_if_false的值:“良好”。
公式3:
=IF(B2<60,"不及格",IF(B2<75,"及格",IF(B2<90,"良好","优秀")))
与公式 1反方向判断,先从B2<60判断,如果条件成立,则返回“不及格”,如果条件不成立,返回参数value_if_false: IF(B2<75,"及格",IF(B2<90,"良好","优秀")),进行再次判断取值,直到最后一个条件B2<90也不成立,就返回“优秀”。
公式4:
=IF(B2<90,IF(B2<75,IF(B2<60,"不及格","及格"),"良好"),"优秀")
这个公式与公式2类似,但却是从大到小依次向下判断取值,这里就不多做解释了。
这4个公式中,公式1和公式3都是把参数value_if_false作为一嵌套函数,而参数value_if_true都是常量;公式2和公式4正好相反,参数value_if_true作为一个嵌套函数,而参数value_if_false都是常量。
公式5和公式6是初学IF函数者经常会写错的公式。
公式5:
=IF(B2>=60,"及格",IF(B2>=75,"良好",IF(B2>=90,"优秀","不及格")))
这个公式错在应该把value_if_true作为嵌套函数,却相反地把value_if_false作为嵌套函数,先判断B2>=60是否成立,如果B2=90,B2>=60这个条件已经成立,结果就返回value_if_true,即“及格”,公式也就停止运算了,结果当然是错误的。
公式6:
=IF(B2<90,"良好",IF(B2<75,"及格",IF(B2<60,"不及格","优秀")))
这个公式与公式5的错误正好相反,先判断B2<90是否成立,如果B2=50,B2<90这个条件已经成立,结果就直接返回“良好”,公式也就停止运算了,结果就会错误。
IF函数讲究个先来后到,先来的先判断,即先判断最外层的IF函数的logical_test参数是否成立,如果不成立,再判断向内一层的IF,这点是初学IF函数时应该特别注意的。
图3: