你用的EXCEL2003吗?最多只嵌套7层?
EXCEL2007及以后可以嵌套64层,建议你用高版本的EXCEL
=IF(B2=1,LOOKUP(C2,{1,6000;3,8000;6,10000;9,12000;12,14000}),IF(B2=2,LOOKUP(C2,{1,4500;3,6000;6,7500;9,9000;12,10500}),IF(B2=3,LOOKUP(C2,{1,3500;3,4500;6,5500;9,6500;12,7500}),IF(B2=4,LOOKUP(C2,{1,3000;3,3500;6,4000;9,4500;12,5000}),IF(B2=5,LOOKUP(C2,{1,2500;3,3000;6,3500;9,4000;12,4500}),IF(B2=6,LOOKUP(C2,{1,2000;3,2500;6,3000;9,3500;12,4000}),IF(B2=7,LOOKUP(C2,{1,1500;3,2000;6,2500;9,3000;12,3500}),IF(B2=8,LOOKUP(C2,{1,1000;3,1500;6,2000;9,2500;12,3000}),LOOKUP(C2,{1,500;3,1000;6,1500;9,2000;12,2500})))))))))
excel中,if()以及iif()函数的嵌套层数是有限制的,office2003是7层,office2007好像是64层。你这个计算需求,分9个职级,每个职级下又分5档年限,总共相当于9*5=45种条件,用高版本的应该行。
如果层数再多,你就用华创网表,相当于网络版的excel,它针对条件计算的层次限制做了专门的处理,突破了嵌套层级的限制,多少层都行。另外,它能根据员工入职日期,自动计算其岗位年限,能随着日期的向前推进自动增长年限,从而实现全自动地计算。具体做法如下:
(1)先建一个员工薪资表,设置工号、姓名、入职日期、职级等基本字段
(2)再设置一个岗位年限字段,并设置其计算公式为简单日期间隔,具体是:入职日期 至 系统时间 之间的年数,即可让它自动计算岗位年限。
(3)再设置一个工资字段,并设置其计算公式为条件计算,具体是:
职级为职级1 岗位年限<=3 则为6000
职级为职级1 3<岗位年限<=6 则为8000
职级为职级1 6<岗位年限<=9 则为10000
...以此类推,把所有条件都列齐,即可计算出工资。
另一种方法供参考:
A1:F10是基准表,C13:D13是输入资料,E13是计算结果:
=OFFSET(A1,LOOKUP(C13,{0,3,6,9,12;1,2,3,4,5}),D13)
下拉填充即可 。
如果职级在B2单元格,年限在C2单元格,
=IF(B2="1等",LOOKUP(C2,{0,3,6,9,12},{6,8,10,12,14}*1000),IF(B2="2等",LOOKUP(C2,{0,3,6,9,12},{4.5,6,7.5,9,10.5}*1000),IF(B2="3等",LOOKUP(C2,{0,3,6,9,12},{3.5,4.5,5.5,6.5,7.5}*1000),IF(B2="4等",LOOKUP(C2,{0,3,6,9,12},{3,3.5,4,4.5,5}*1000),))))
如果建立了对应表,那么可通过INDEX+MATCH+MATCH来实现。
=INDEX(F$2:J$10,MATCH(A2,E$2:E$10,0),MATCH(B2,F$1:J$1,1))
详见附图示例
①建立基础数据表:姓名、员工工号、入职时间、职位等级
②建议基础数据表(相对恒定):职位级别、年限、薪水
这样就可以根据员工工号(当前日期)直接调出你想要的某员工薪水
表一和表二可以之间设置隐藏,用用户窗体进行审核录入