当前位置:首页|资讯

天啦噜!教你用Excel计算退休年龄

作者:信雅财税发布时间:2024-09-21


2024年9月14日 海拉尔

就在昨天(2024年9月13日),延迟退休正式通过了!官方也第一时间推出了计算退休年龄的小程序,今天,我们用Excel实现和官方小程序一模一样的功能。打开电脑,亲手操作一下吧!

需求解析

首先,让我们看一下官方小程序的界面:

选择出生年月,选择人员类型后,返回法定退休年龄、退休时间、延迟退休月份。

那么,接下来就是如何计算了,这里我们找到原文:

第一条 从2025年1月1日起,男职工和原法定退休年龄为五十五周岁的女职工,法定退休年龄每四个月延迟一个月,分别逐步延迟至六十三周岁和五十八周岁;原法定退休年龄为五十周岁的女职工,法定退休年龄每二个月延迟一个月,逐步延迟至五十五周岁。国家另有规定的,从其规定。

以男职工为例:2025年1月,往前推60年是1965年1月,也就是说,1965年1月出生的男职工,按之前的规定是2025年1月退休,改革后,延迟一个月,变成了2025年2月退休。每四个月延迟一个月,就是1965年1月至4月出生的男职工,都是延迟一个月,即2025年2月退休;依此类推,5至8月对应2025年3月退休,这样一直延迟到上限,即三十六个月。

女职工同理

Excel表设计

需求解析完成后,就可以开始设计表了,首先,做一个和小程序样子差不多的用户界面:

怎么样,很像吧,五个蓝色的格子和两个按钮是我们要设置的,剩下的都是固定的背景,固定的背景用截图、文字、边框完成,这里就不再说明了,下面解释变动的部分如何做出来。

这里要通过数据有效性(新版本叫数据验证)做出来一个下拉菜单,类型是序列,范围就按官方小程序的1930年至2030年,下面开始具体操作:

数据验证设置好了,下面我们去S列录入日期范围:

EOMONTH函数可以取某个日期所在月份的最后一天,第二参数是1,就是取下一个月的最后一天,这样向下填充,就可以形成一个按月递增的日期序列

现在我们发现,刚才设置好的数据验证,下拉菜单已经生效了

但是我们只想要年月,不想要日,怎么办,请看下图:

也是用数据验证做一个下拉菜单,但是元素只有三个,可以直接填在菜单里面:

法定退休年龄是出生年月与退休时间相差的年数,可以用DATEDIF函数计算,外面再用IF嵌套一下,当出生年月和性别及人员类型两者之一为空时,退休年龄也为空,公式如下:

=IF(OR(G8="",G10=""),"",DATEDIF(G8,G30,"y"))

男职工是出生年月加60年加延迟月数,女职工同理,公式如下:

=IF(G10="男职工",EDATE(G8,60*12+G32),IF(G10="原五十退休女职工",EDATE(G8,50*12+G32),IF(G10="原五十五退休女职工",EDATE(G8,55*12+G32),"")))

EDATE函数返回某个日期增加月份数的日期

首先可以用IF函数进行判断,男职工1965年1月之前出生的,延迟月数为0,1976年8月之后出生的,延迟月数为36,这两个日期中间的,逢四进一。接下来要解决如何逢四进一,这里使用整除的方法,即用ROW函数取出行号,整除4,再用INT函数取整,具体公式如下:

=IF(S421<DATE(1965,1,1),0,IF(S421>DATE(1976,8,31),36,INT((ROW()-421)/4)+1))

减421是因为1965年1月在第421行如下图,男职工1965年1月开始延迟退休,1976年9月后都是上限36个

接下来的两列是女职工的,原理类似,改一下参数 

原五十岁退休女职工(注意是延迟月数上限60,逢二进一)1975年1月在541行:

=IF(S541<DATE(1975,1,1),0,IF(S541>DATE(1984,10,31),60,INT((ROW()-541)/2)+1))

原五十五岁退休女职工:

=IF(S481<DATE(1970,1,1),0,IF(S481>DATE(1981,8,31),36,INT((ROW()-481)/4)+1))

接下来,在延迟月数单元格中输入公式即可,通过IF判断性别及类型,来决定VLOOKUP函数的第三参数值,公式如下:

=IF(G10="男职工",VLOOKUP(G8,S:V,2,0),IF(G10="原五十退休女职工",VLOOKUP(G8,S:V,3,0),IF(G10="原五十五退休女职工",VLOOKUP(G8,S:V,4,0),"")))

下面是VBA内容,为了能尽量还原官方小程序,如果不想用VBA可以跳过

鼠标会变成一个小十字,然后画一个大小合适的按钮,给按钮起名字然后点击确定

点击编辑文字,设置按钮显示的文字

进入VBA编辑界面,新建模块,输入下面代码:

Sub ClearCellA1()    Sheets("Sheet1").Select        ' 清除A1单元格的内容    Range("G8:H8").ClearContents    Range("G10:H10").ClearContents    MsgBox "重置成功!"End Sub

保存代码后会提示需要把工作簿另存为启用宏的工作簿,照做即可右键点击重置按钮——指定宏

成功清除了出生年月和性别及人员类型!

下面是查询按钮,正常来说Excel默认是自动计算公式的,不需要点一下按钮,这里为了还原官方小程序的功能,先把工作簿更改为手动计算,然后把查询按钮设置为开始计算即可:

在VBA编辑界面输入下面代码:

Sub RecalculateWorkbook()    Application.Calculate    MsgBox "计算成功!"End Sub

然后给查询按钮指定宏即可

现在,计算器已经全部完成,请开始使用吧!

今天用到了各种各样神奇的函数函数,想学吗?

请关注公众号后续精彩内容!



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1