根据旧工资按要求计算新工资

本文是在CSDN论坛回答问题的结果,原文地址在:点击打开链接

题目要求:
        目前进行工资调整,根据目前所在的岗位定新的目标工资,要求目标工资必须在工资范围内,原岗级为6级,新岗级为9级,原则是在新的岗级范围内就近就高原则,即在指定级别范围内找到最接近的,并大于等于目前的工资。

示例数据:

姓名 岗级 工资 新工资
aa1 A级 2200
aa2 B级 3750
……

aa17 D级 8437.5


原工资级别表
一级 二级 三级 四级 五级 六级
A级 1000 1500 1800 2200 2500 3000
B级 1500 2250 2700 3300 3750 4500
C级 2250 3375 4050 4950 5625 6750
D级 3375 5062.5 6075 7425 8437.5 10125
E级 5062.5 7593.75 9112.5 11137.5 12656.25 15187.5

新工资级别
九级 八级 七级 六级 五级 四级 三级 二级 一级
A级 5400 4800 4200 3600 3000 2640 2160 1800 1200
B级 9720 8640 7560 6480 5400 4752 3888 3240 2160
C级 17496 15552 13608 11664 9720 8554 6998 5832 3888
D级 31493 27994 24494 20995 17496 15396 12597 10498 6998
E级 56687 50388 44090 37791 31493 27714 22675 18896 12597

计算结果:

姓名 岗级 工资 新工资
aa1 A级 2200 2640
aa2 B级 3750 3888   
……

aa17 D级 8437.5 10498   

 

公式设计:

第一步 根据B16找出对应的级别在2-6行中的位置,它决定了我们等会去找的行,这里值为1
公式为: MATCH(B16,$A$2:$A$6)


第二步 用index函数把2-6行中第1行的数据返回,缩小查找范围为第2行A级的九个工资。
MATCH(B16,$A$2:$A$6)
公式为: INDEX($B$2:$J$6,MATCH(B16,$A$2:$A$6))


第三步 再用match函数在第二步结果中找与原工资相近而高的值所在的位置,结果是6
公式后面的参数-1,决定了是找大于查找值的最接近值
公式为: MATCH(C16,INDEX($B$2:$J$6,MATCH(B16,$A$2:$A$6),),-1))


第四步 有了一个区域B2:J6内的行号1(第一步的结果)
有了一个区域B2:J6内的列标6(第二步的结果)
再用index函数得出那个位置的值就行了。
公式为: INDEX($B$2:$J$6,MATCH(B16,$A$2:$A$6),MATCH(C16,INDEX($B$2:$J$6,MATCH(B16,$A$2:$A$6),),-1))

 

 

图示:

 

 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值