需要 Excel表格来计算复杂的假期应计和假期时间的使用

我已经为此工作了一段时间,并尝试了不同的样式...我需要开发一个跟踪电子表格(适用于 50 名员工),该电子表格将根据以下参数计算累积的休假时间和使用的休假时间:

我已经为此工作了一段时间,并尝试了不同的样式...我需要开发一个跟踪电子表格(适用于 50 名员工),该电子表格将根据以下参数计算累积的休假时间和使用的休假时间:

* 在公司工作不到 3 年但超过 90 天周年纪念日的员工(他们开始累积)(对此还有一个警告...应计日是过去一个月的第一个月 90 天)[我在我的 excel 表上找到了这个 90 天的项目] 它将在:-每月 4 小时,在月底,如果他们可以继续使用 72 小时的最长休假时间,则可以继续使用 72 小时(如果他们可以继续使用 72 小时)

* 在公司工作超过 3 年但不到 6 年的员工结转之前的假期,并从这里开始累积:-每月 6.8 小时,在月底,他们可以存储的最大上限为 122.4 小时(但如果他们使用休假时间并低于 122.4 小时,他们可以继续累积高达 122.4 小时...)

* 员工 6 年及以上的公司进行了他们以前的假期,并开始从这里开始,从这里开始:-10 个小时一个月,在月底,最大上限为 180 小时,他们可以存储(但如果他们使用的休假时间和低于 180 小时,他们可以继续累积到 180 小时...)

& amp;是的,我需要能够扣除使用的休假时间。

有没有人有任何建议布局或公式,可以做这些功能的一部分?

我已经创建了一个测试表,并根据这些条件为第一,并开始在第二组规则(年 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)
0

允许

列 A EmpName

列 B EntryDate

列 C 当前月份的天数

D 列在月底限制 Accruel 缓冲区

逐月重复列 C 和 D

实例

                        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

根据经验,在 VBA 中调试 / 维护 2-3 个嵌套的IfSelect Case比在工作表中没有空白,没有注释等的 92 个字符长的公式更容易。如果业务逻辑发生变化,则需要查看一个代码块-而不是增长了 3x12 个月 x 50 个用户的工作表中的数十个 / 数百个公式。

上述功能可能需要例如

Function EndOfMonth(MyDate) as Date
Function BeginOfNextMonth(MyDate) as Date

所以在床单上你只是

手动输入每月花费的小时数

将新缓冲区计算为= MIN([oldbuffer] - [Spent] + GetMonthly(...), GetCap(...))

小心地使用相对 / 绝对寻址,使公式跨列 / 行“可复制”,例如

向下复制时从标题中获取ThisDate上的 row-absolute

向右复制时,每个 Emp 的EntryDate上的绝对列

您当然可以直接在工作表的单元格中使用=GetCap(...)=GetMonthly(...)来显示中间结果并用于调试目的。

比较日期时要小心

Tips:

3 年后并不总是 365x3 天以后

检查 VBA DateSerial () 函数对月 & gt;12 和月 & lt;0 的作用

下月末总是 2 个月的第一天减去 1...即使在闰年的 2 月ggg

并张贴更多的问题,如果你被困在这些功能。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(713)
从excel的工作表中删除线条 无边框
上一篇
VisualStudio代码总是显示gitlens 什么设置会导致这种情况
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(37条)