首页 > 其他分享 >超难的工龄计算(原题)

超难的工龄计算(原题)

时间:2022-10-14 20:31:14浏览次数:41  
标签:roundup 原题 半年 工龄 yearfrac 超难 计算 小数

题目内容:

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

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

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


结果展示:

if(E4="在职",

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

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

超难的工龄计算(原题)_数据_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


标签:roundup,原题,半年,工龄,yearfrac,超难,计算,小数
From: https://blog.51cto.com/u_12337265/5757946

相关文章

  • 7-13 统计工龄
    给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。输入格式:输入首先给出正整数N(≤10^5),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0,50]。输......