手机版

请以后不要用IF函数来解决这个问题

时间:2021-09-17 来源:互联网 编辑:宝哥软件园 浏览:

相信大部分人都很熟悉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 $ 233,360 $ j $5,2)并填写。

注:VLOOKUP函数公式中的第四个参数可以是TRUE或1,也可以直接省略。返回的结果等于或小于搜索值的最大值。

02

会计奖金。

如下图表格所示,计算员工奖金。规则是,如果实际员工人数比计划人数多一个,奖励80元,奖金上限为1200元。

如果使用IF函数,请输入公式:

=if (c2b2,0,if ((c2-b2) * 801200,(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)))

使用这样的公式,你容易出错,别人也会看到。

您也可以使用最大和最小函数进行计算,并输入公式:

=min(max(int)((C2-B2)/51)* 300,0),1200),然后向下填充。

注:从0开始,每步增加5人。结合INT函数,向下取整加1,乘以上下300步之差。最后,使用最大值和最小值函数分别得到最大值和最小值。

版权声明:请以后不要用IF函数来解决这个问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。