![](/img/trans.png)
[英]I need to create an excel formula to calculate vacation time with maximum accrual of 240hours
[英]Need Excel Sheet to Calculate Complex Vacation Accrual and Use of Vacation Time
我已经为此进行了一段时间的尝试,并尝试了不同的样式...我需要开发一个跟踪电子表格(适用于50名员工),该电子表格将根据以下参数计算应计休假时间和所使用的休假时间:
*在公司工作不到三年但超过90天周年纪念日的员工(他们开始应聘时)(此事还有其他警告……应聘日是指该月之后的当月的第一个月) 90天)[我在excel工作表中算出了这90天的项目],它将在以下时间产生:-月底每月4小时,他们可以存储的最大上限为72小时(但如果他们使用休假时间并降至72小时以下,他们最多可以继续累积72小时...)
*在公司工作超过3年但不到6年的员工会保留之前的假期,并从这里开始累积:-月底每月6.8个小时,最高上限为122.4他们可以存储的小时数(但是如果他们使用休假时间并低于122.4小时,则可以继续累积最多122.4小时...)
*在公司工作了6年及以上的员工可以休假,并从这里开始累积:-月底每月10个小时,最多可以存储180个小时(但如果他们使用休假时间并低于180小时,则可以继续累积最多180小时。...)
是的,我需要能够扣除使用的休假时间。
是否有人对布局或可以使用这些功能的公式提出任何建议? 感谢您对我还能使用的其他任何建议或建议!
我已经创建了一张测试表,并根据这些条件在第一组中进行了累积,并从第二组规则开始(3年以上)。
但是,当我在第一个保单上最多累积72小时时,如果他们使用休假并再次落在72小时上限之内,它将不再正确累积。
我知道这是一项过于复杂的政策,但这是公司想要的,他们不会让步。...任何帮助或建议,我们都感激不尽。 我知道我的工作表不好。.但是我正在尝试选项。
以下是我90天使用的方程式:
=IF(F2<TODAY()-90, F2+90, "90 Day Period")
然后得到我使用后一个月的第一天:
=IF(G2="90 Day Period","N/A",DATE(YEAR(G2),MONTH(G2)+1,1))
我尝试使用第一条规则的产生(但是它有问题...):
=IF(N2="N/A","N/A",IF(N2<=36,MIN(72,((N2*4)-P2),72),(72-P2)))
对于第二条规则:
=IF(AND(N2>36,N2<=72),MIN(122.4,((N2-36)*6.8)+Q2-S2),0)
让
例
01-Sep-2013 01-Oct-2013
EmpName EntryDate spent buffer spent buffer ... etc ...
.-------.-----------.-----------.------.-----------.------.
me 01-Jan-2010 0 12 0 18.8
you 01-Jun-2013 0 4 0 4
为了不获取意大利面条式,我建议在VBA中创建一些用户定义的函数,例如
Function GetCap(EntryDate, ThisDate) As Single
Function GetMonthly(EntryDate, ThisDate) As Single
根据经验,在工作表中调试/维护2-3个嵌套的If
或Select Case
比在92个字符长的公式中没有空格,没有注释等要容易得多。 如果业务逻辑发生变化,则只需要审查一个代码块-而不是在增长3x12个月x 50个用户的工作表中使用数十个/百个公式。
以上功能可能需要例如的帮助
Function EndOfMonth(MyDate) as Date
Function BeginOfNextMonth(MyDate) as Date
这样在工作表中
= MIN([oldbuffer] - [Spent] + GetMonthly(...), GetCap(...))
ThisDate
上的行绝对是从标头获得的 EntryDate
上的列绝对值 当然,您可以直接在工作表的单元格中使用=GetCap(...)
和=GetMonthly(...)
以显示中间结果并用于调试目的。
比较日期时要小心
温馨提示 :
下个月月底总是提前2个月减去1的前几天......甚至在闰年GGG二月
如果您对这些功能感到困惑,请发表更多问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.