题目内容:
计算每位员工在本公司工作的工龄,要求不足半年按半年计、超过半年按一年计,一年按365天计算,保留一位小数。其中,“在职”员工的工龄计算截止于2016年12月31日,离职和退休人员计算截止于各自离职或退休的时间。
(大猫删了一些用不到的数据,便于观看)
结果展示:
if(E4="在职",
roundup(yearfrac(C4,"2016-12-31",3)*2,0)/2,
roundup(yearfrac(C4,D4,3)*2,0)/2)
详细分析:
要求不足半年按半年计、超过半年按一年计,
一年按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.保留一位小数
设置单元格格式,保留一位小数。