ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2400|回复: 6

[求助] 关于年假公式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-19 13:20 | 显示全部楼层 |阅读模式
<1>连续工作满1未满5年,每年可以享受5天年休假。自第5年起每年增加1天,最高不超过9天;
<2>连续工作满10-20年,每年可以享受10天年休假;
<3>工作满20年以上,每年可以享受15天年休假。

可以折算的,
姓名
入职日期
截止日期
工龄
当年内可用年假
当年内可折算
 
2017-9-10
2018-12-31
1.03
5天
 
2012-10-10
2018-12-31
5.94
6天
 
2017-10-10
2018-12-31
0.94
1天
 

年假公式计算.zip

6.97 KB, 下载次数: 92

TA的精华主题

TA的得分主题

发表于 2018-9-19 13:31 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-19 13:33 | 显示全部楼层
李兴德 发表于 2018-9-19 13:31
 不满1年有1天  

不是,2017-9-10到2018-9-10满一年,那么2018-12-31还剩2个月,那么折算下有个1天

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-19 13:34 | 显示全部楼层
李兴德 发表于 2018-9-19 13:31
 不满1年有1天  

2个月可能不够,就是如果满1年,截止2018-12-31还剩3个月的话可以折算1天

TA的精华主题

TA的得分主题

发表于 2018-9-19 13:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhpcnd 发表于 2018-9-19 13:34
2个月可能不够,就是如果满1年,截止2018-12-31还剩3个月的话可以折算1天

折算规则是什么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-19 13:50 | 显示全部楼层

                        NOW                       
姓名        入职日期        截止日期            工龄        当年内可用年假        当年内可折算       
        2017-9-22        2018-12-31        0.99                 1.25            折算为1天
                                        截止2018-12-31会有3个月       

TA的精华主题

TA的得分主题

发表于 2018-9-28 18:14 | 显示全部楼层
Public Function AnLeaveDay1(HireDate As Date, Optional EndDate As Date = 0) As Double '精确到天数

Dim i, j As Double
Dim s As Date
Dim y, m, t, d As Integer

If EndDate = 0 Then
EndDate = Date '当前日期
End If
'EndDate = CDate(WorksheetFunction.EoMonth(Date, 0)) '本月的最后一天
y = Year(EndDate) - Year(HireDate)
m = Month(HireDate) - Month(EndDate)
d = Day(HireDate) - Day(EndDate)
i = DateDiff("m", HireDate, EndDate) / 12
t = Year(HireDate) + 1
s = t & "/01/01"
j = DateDiff("d", HireDate, s) / 365
AnLeaveDay1 = 0

If (i >= 21) Or (y = 21 And m > 0) Then

AnLeaveDay1 = 15
Else
If (i > 20 And i < 21) Or (i = 20 And d <= 0) Then
AnLeaveDay1 = 5 * j + 10
Else
If (i >= 11) Or (y = 11 And m > 0) Or (i = 20 And d > 0) Then
AnLeaveDay1 = 10
Else
If (i > 10 And i < 11) Or (i = 10 And d <= 0) Then
AnLeaveDay1 = 5 * j + 5
Else
If (i >= 2) Or (y = 2 And m > 0) Or (i = 10 And d > 0) Then
AnLeaveDay1 = 5
Else
If (i > 1 And i < 2) Or (i = 1 And d <= 0) Then
AnLeaveDay1 = 5 * j
End If
End If
End If
End If
End If
End If

AnLeaveDay1 = Round(AnLeaveDay1, 0)

'AnLeaveDay1 = Int(AnLeaveDay1)

End Function

自定义函数,第一个参数是入职日期,第二个参数是核算截止日期,截止日期为空,则为当前日期,最终可休年假天数四舍五入取整。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-26 15:46 , Processed in 0.037925 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表