用函数计算工龄 您所在的位置:网站首页 按工龄计算年假的公式 用函数计算工龄

用函数计算工龄

2024-07-13 05:08| 来源: 网络整理| 查看: 265

在Excel中进行法定年假的计算,不使用数组函数以及lookup函数的情况下,只借助工龄一个参数就可计算法定年假,同时还解决了年假“临界点”的问题,即在当年年中工龄满1年、10年、20年的情况。

首先我们来看法定年假的规定:

职工累计工作已满1年不满10年的,年休假5天;已满10年不满20年的,年休假10天;已满20年的,年休假15天。

可以看到其中有4个阶梯/级别:

不满1年,0天1年以上不满10年,5天10年以上不满20年,10天20年以上,15天

然而实际操作中,员工的工龄不可能都是从每年1月1日开始算的,所以正常情况下,工龄满1年、10年、20年都是发生在年中的。

那以去年毕业的应届生为例,到今年7月份即工龄满1年,那么从这个时候开始,这位应届生在今年实际上差不多是有半年时间可以按5天/年的标准享有年假,即2.5天。

(这里补充一下,所以实际操作中年假的计算,都是按照截止当年年底12月31日时工龄来计算的)

这样一来,我们发现在实际操作中,法定年级的计算阶梯有7个,详见下图。我们设工龄为x,我们还是以上面的应届生为例,到今年年底他的工龄是1.5年,则可享有年假为5(1.5-1)=2.5天。

若以今年年底工龄为10.5年的老员工为例,他可享有的年假为5(11-10.5)+10(10.5-10)=7.5天。

注:上述公式是通过化简原始公式5*[1-(x-10)]+10*(x-10)所得到的。

看到这里大家不难发现,从计算的逻辑上来讲,我们需要的只是工龄的小数部分。以5(11-x)+10(x-10)为例,Excel中可以用Mod或者Int函数获取工龄的小数部分,比如用Mod函数就是5*(1-Mod(x,1))+10*Mod(x,1) 。因为我随后需要将这个公式套用到Access里去,虽然Access表达式支持Int函数,但是我怕表达式太复杂产生问题,所以这里还是用了最简单的代数式,其实化简之后并没有太复杂。

72ed59e1799eaff72b4720465ef60e2a.png 计算公式看起来有点莫名,但是基本也就是个代数问题,化简后看起来也蛮简单的,比Mod或者Int都简单

逻辑厘清了之后那就是写 If 函数了,这个7个阶梯/级别怕不是要6个If嵌套,想想就是脑壳痛。然后我试着用Excel组织了一下,如图:

e800ac10ade69022b5192b71475ce830.png 逻辑清晰~!

接下来可以按照Excel的布局来修改参数,大家看到里面只有一个参数x,即工龄,那比如在我们的表格中,工龄是在C列第6行开始,那可以把公式中的x替换为C6,这个在Excel中用Ctrl+F替换即可实现。然后把这部分内容复制下来,黏贴到剪贴板中,再删去空格和换行就可以了,这里略过不谈。

处理好的公式如下:

INT(IF(C6>=21,15,IF(C6>=20,(5*C6-90),IF(C6>=11,10,IF(C6>=10,(5*C6-45),IF(C6>=2,5,IF(C6>=1,(5*C6-5),0)))))))

法定年假以整天计算,所以前面加了Int函数进行取整。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有