他最后一次工资涨到多少?2个方法快速搞到
作者:龚春光来源:部落窝教育发布时间:2018-06-16 11:32:05点击:3722
小编有话说:很多公司每次对员工做工资调整都会记录下来,在一个表格里面,那么多次工资记录,我们如何找到最后一次工资调整呢?作者给我们介绍了两种方法,你看哪种方便就用哪个吧!
早上起床刚打开后台就看到一位伙伴的留言,“老师,请问表格中记录每一次工资调整信息,每次vlookup都是显示第一次调整金额,我怎么才能按照姓名匹配到最后一次调整的金额”?他的问题还是比较普遍的,曾经也遇到很多小伙伴咨询过同样的问题。所以今天就跟大家分享两种解决方案。
这位粉丝的问题是表中记录了每一个员工多次薪资调整信息,现在需要根据姓名来查找最终的薪资状况。(VLOOKUP查找数据的时候,默认是从上往下查找,找到第一个符合条件的数据后,就不会再继续往下查找)
如上表通过函数公式VLOOKUP(K2,A:E,5,0)查找秦英邦对应薪资调整记录,返回的是第一次调整后的薪资。现在的需求是返回员工最终的薪资,也就是表中的E6单元格。
(本文的数据源是默认的按姓名和时间顺序排列的,所以只需要找出每个姓名的最后一次记录,如果大家在实际工作中记录的表格是乱序的,可以先用“排序”功能按姓名和时间排序,再进行下方的操作)
【解决方案一】
根据表中数据可以看出员工薪资调整是按照顺序的,有章可循。我们可以通过INDEX结合数组公式完成查找。
通过数组公式INDEX(E:E,SMALL(IF(A:A=K2,ROW(A:A),65536),COUNTIF(A:A,K2)))即可完成最后一行数值查找。(输入公式后,按shift+ctrl+enter结束)
函数公式解析:
INDEX函数通过行数来返回对应单元格的数值,index(E:E,6)就表示返回E列中第6行的数值。所以上方的公式中,第二参数使用了SMALL函数来得到同一个人最后一次工资调整的行号。
1、第一个参数E:E就是表示返回E列的数值。
2、第二个参数SMALL(IF(A:A=K2,ROW(A:A),65536),COUNTIF(A:A,K2))返回数组中最大的行号。
ROW(A:A)用于返回A列的行号。
IF(A:A=K2,ROW(A:A),65536)通过IF判断A列中的姓名是否等于K2单元格,如果等于则返回对应的行号,否则返回65536(无实意,表示无限大)。
COUNTIF(A:A,K2)部分是统计K2单元格中姓名在A列数据中出现的次数。
SMALL(IF(A:A=K2,ROW(A:A),65536),COUNTIF(A:A,K2))=SMALL({2、3、4、5、6},5),返回数组中第5小的值,也就是最大值行号6。
【解决方案二】
通过函数公式LOOKUP(1,0/(K2=A:A),E:E)即可返回员工对应的最终薪资。
函数公式解析:
(1)用K2单元格依次与A列中的数据匹配,如果相同则返回TURE,如果不同则返回FALSE。在运算过程中TRUE为1,FALSE为0。
以秦英邦为例,在M2单元格输入=$K$2=A2,鼠标放置在M2单元格右下角,向下拖动填充至M19单元格。 K2单元格依次与A列中所有姓名进行匹配,相同则返回TRUE,不相同则返回FALSE,如下图所示:
然后在用0除以M列中的结果,由于四则运算中TRUE表示1,FALSE表示0,所以就会得到0或者#DIV/0! 两种结果。
(2)根据lookup查询规则,如果第1参数的数值大于第2参数中的最大值,那么就定位到第2参数最后一个数值所在行(错误值不参入),然后返回该行中第3参数(E列)的值。
本文配套的练习课件请加入QQ群:316492581下载。
如果您因工作所需使用到Excel,请关注部落窝教育的《一周Excel直通车》视频课或《Excel极速贯通班》直播课系统学习。