我已经研究了一段时间并尝试了不同的风格......我需要开发一个跟踪电子表格(50名员工),它将根据以下参数计算累计休假时间和休假时间:
*在公司工作不到3年但已超过90周年的员工(他们开始累计)(还有一点需要注意......应计日是本月的第1天超过90天的那个月)[我在我的excel表上找到这个90天的项目]它将在以下时间累积: - 每个月4个小时,月末,最大上限为72小时,他们可以存储(但如果他们使用休假时间并且低于72小时,他们可以继续累积最多72小时.. 。)
*在公司工作超过3年但不满6年的员工将结束其之前的假期并从此处开始累积: - 每月6.8小时,月末,最大上限为122.4小时,他们可以存储(但如果他们使用休假时间并且低于122.4小时,他们可以继续累积至122.4小时.. 。)
* 6岁及以上的员工继续他们的假期,并从此开始累积: - 每个月10个小时,在月底,他们可以存储180小时的MAX上限(但如果他们使用休假时间并且低于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)
答案 0 :(得分: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
根据经验,在VBA中调试/维护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 ...即使在闰年的2月 ggg
如果您遇到这些功能,可以发布更多问题。