0
点赞
收藏
分享

微信扫一扫

超难的工龄计算(原题)

题目内容:

计算每位员工在本公司工作的工龄,要求不足半年按半年计、超过半年按一年计,一年按365天计算,保留一位小数。其中,“在职”员工的工龄计算截止于2016年12月31日,离职和退休人员计算截止于各自离职或退休的时间。

超难的工龄计算(原题)_数据

(大猫删了一些用不到的数据,便于观看)


结果展示:

if(E4="在职",

roundup(yearfrac(C4,"2016-12-31",3)*2,0)/2,

roundup(yearfrac(C4,D4,3)*2,0)/2)

超难的工龄计算(原题)_c函数_02


详细分析:


要求不足半年按半年计、超过半年按一年计,

一年按365天计算,保留一位小数。

 “在职”员工的工龄计算截止于2016年12月31日,

离职和退休人员计算截止于各自离职或退休的时间。


用if分类讨论

在职和离职的结束日期是不同的。所以利用if函数来区别对待两种结束日期。

if(在职,计算1,计算2)

计算1和计算2唯一的区别就是结束日期不同,因此写完一个后,复制一下,做简单修改即可。


详细思路如下(烧脑)

1.计算相隔多少年(小数)

先把两个日期之间相隔多少年算出来,因为题目说每年按365天算,所以使用yearfrac函数。结果是一个小数。

yearfrac(起始日期,结束日期,3)

第3个参数为3表示一年按365天算


2.计算相隔多少“半年”(小数)

求出两个日期之间相隔的年份之后,我们计算这个间隔之间有多少个半年。因此让上述结果再乘以2便是有多少个半年(或者除以0.5),结果是小数。

yearfrac(参数省略)*2


3.计算“半年”的个数(整数)

因为题目说不足半年,要按半年算,因此上述计算得到的“半年的个数”要向上取整(使用roundup函数)。最终计算得到“半年的个数”

roundup(yearfrac(参数省略)*2,0)


4.得到结果(工龄)

而我们最后需要的是工龄,因此半年的个数还要除以2,才是“年的个数”。

roundup(yearfrac(参数省略)*2,0)/2


5.保留一位小数

设置单元格格式,保留一位小数。


超难的工龄计算(原题)_数据_03


举报

相关推荐

0 条评论