拜托,这种问题以后不要再用IF函数了
相信大多数人对IF函数都再熟悉不过了,作为条件判断函数,它简单又实用,备受表哥表姐们欢迎!
然而,在处理一些表格数据时,也许你已经习惯使用IF函数,实际上有时候IF函数并不是最适用的,尤其是多层嵌套的情况下,为了避免出错,便于他人理解,可以采用其它更合适的函数来解决问题的。
下面技巧小编跟大家解两个很常见的实例。
01
评定考核等级
如下图表1和表2所示:根据考核得分及等级判断标准,评定员工的考核等级。
表1▲
表2▲
常规做法,直接用IF函数进行判断,输入公式:
=IF(B2>=85,”A级”,IF(B2>=70,”B级”,IF(B2>=60,”C级”,”D级”))),往下填充即可。
但是假如判断等级继续增加的话,IF函数嵌套会越来越多,公式就非常冗长,也容易出错。
这里我们可以借助VLOOKUP函数的模糊查找来解决问题,设置再多的等级都不用担心。首先我们把考核等级标准整理一下,提取出每个等级的下限分数,从低到高升序排列:
再输入公式:=VLOOKUP(B2,$I$2:$J$5,2),往下填充就可以了。
说明:VLOOKUP函数公式中第4个参数可以是TRUE或1,也可以直接省略,返回的结果等于查找值或小于查找值的最大值。
02
核计奖金
如下图表格所示,核计员工奖金,规则为实际到岗人数每超过计划人数1人,奖励80元,奖金1200元封顶。
如果用IF函数,输入公式:
=IF(C2<B2,0,IF((C2-B2)*80<1200,(C2-B2)*80,1200)),往下填充。
这里用IF函数首先判断有没有超过计划人数,超过才有奖励;如果超过,核计出来的奖金分为两种情况,再次进行判断,1200以内按实际奖金核计,超过1200的,则按1200封顶。
仔细分析一下,这里存在两个分界值,0和1200,我们也可以用MAX和MIN函数来解决这个问题。首先把(C2-B2)*80计算出的结果和0进行比较,取最大值0,再用(C2-B2)*80和1200进行比较,取最小值1200。
输入公式:=MIN(MAX((C2-B2)*80,0),1200),往下填充。
结果和IF函数计算是一致的,公式更加简短明了。
我们再来延伸一下,把核计奖金的规则改为:超出人数在5人以内的(不含5人),奖励300;超出人数在5到10人之间的(不含10人),奖励600;超出10到15人之间的(不含15人),奖励900;超出15人以上的,则奖励1200。
如果这时还用IF函数,公式多层嵌套,实在太冗长了:
=IF((C2-B2)<0,0,IF((C2-B2)<5,300,IF((C2-B2)<10,600,IF((C2-B2)<15,900,1200))))
使用这样的公式,自己容易出错,别人看了也头大。
同样还是可以用MAX和MIN函数来计算,输入公式:
=MIN(MAX(INT((C2-B2)/5+1)*300,0),1200),往下填充即可。
说明:从0开始计算,每一阶梯递增5人,结合INT函数向下取整加1,乘于上下阶梯的差额300,最后用MAX和MIN函数分别取最大值和最小值即可。