需要Excel工作表来计算复杂的度假应计和度假时间的使用

我一直在这个工作了一段时间,尝试不同的风格…我需要制定一个跟踪电子表格(50名员工),将计算累计休假时间和休假时间使用基于以下参数:

*工作时间不足3年,但与公司签订90周年纪念的员工(他们开始累计)(对此还有一点要注意……应计日是过去一个月中的第一个月90天)[我在Excel表格中计算了这个90天的项目],它将累积在: – 月底4个小时,在月底,可以存储72小时的MAX上限(但如果它们使用休假时间并低于72小时,他们可以继续累积达72小时…)

*已经工作超过3年但不足6年的员工,结束前一天的休假,从下列时间开始计算: – 每月6.8小时,月末,最高工资上限为122.4他们可以储存的小时数(但是如果他们使用休假时间并且低于122.4小时,他们可以继续累积达122.4小时…)

* 6年以上的员工在公司休假前从下列时间开始累计: – 每月10小时,每月月底,可以存储180小时的MAX上限(但是如果他们使用休假时间并低于180小时,他们可以继续累积180小时….)

是的,我需要能够扣除使用的假期时间。

有没有人有任何build议布局或公式,可以做这些function的一部分? 我感谢任何意见或build议,我还可以使用什么!

我已经创build了一张testing表,并且基于这些条件为第一条规则累积,并开始了第二套规则(3年以上)。

但是,如果我们在第一次保单的最多72小时内累计,那么如果他们使用了休假,并且再次落在72小时的上限之下,它就不会正确累加。

我知道这是一个过于复杂的政策,但这是公司想要的,他们不会让步….任何帮助或build议表示赞赏。 我知道我的表不是很棒..但是我正在尝试选项。


以下是我用于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) 

  • 列A EmpName
  • 列B EntryDate
  • 列C当天的DaysSpent
  • 月底,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 

为了不获得通心粉公式,我build议在VBA中创build一些用户定义的函数

 Function GetCap(EntryDate, ThisDate) As Single Function GetMonthly(EntryDate, ThisDate) As Single 

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

上述function可能需要例如的帮助

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

所以在你的工作表中

  • 手动input一个月一个月的时间
  • 计算新缓冲区为= MIN([oldbuffer] - [Spent] + GetMonthly(...), GetCap(...))
  • 仔细使用相对/绝对寻址,使公式“可复制”跨列/行,例如
    • 当向下复制时, ThisDate上的行是绝对的
    • 在向右复制时,每个Emp的EntryDate上的column-absolute

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

当你比较date时要小心

提示

  • 3年后,并不总是365×3天后
  • 检查VBA DateSerial()函数在12个月和0个月以上的工作情况
  • 下个月底总是比前两个月的头一天减1 …即使在闰年ggg的二月

    并发布更多的问题,如果你被困在这些function。