所以,我不太确定该如何提问,这是我在这个网站上的第一个问题,但我会尽力。
在我的工作中,我会收到一张非常大的数据表,其中包含数百名员工的工作时间。
我的任务是查看这张数据表,具体查看某位员工的工作时间并确定一些事情。
首先,如果他们工作的时间等于或超过 48 小时,则将超过 48 小时的时间归类为加班时间,并按更高的费率计费。
如果总小时数少于 48 小时,那么显然不需要做任何事情。问题在于我们接收数据的方式有点不稳定。
我已经草拟了一个非常简单的我的工作示例,您会注意到,在某个时候,其中一个班次是按“综合费率”计费的,无论我们使用什么程序来记录小时数,都会识别出该班次的小时数已超过 48 小时,并且对超过 48 小时之前的小时数按正常费率计费,其余小时数按加班费率计费(正常费率 * 1.5)
所以,我的问题是:我是否可以编写一个程序来扫描每个员工的这些班次,并且它可以识别出从“综合”金额中扣除多少小时,并将其分为按正常费率计费的小时数和按加班费率计费的小时数。我附上了一张屏幕截图,显示了我开始的内容和我想要结束的内容。
答案1
我知道您想为“综合”日插入一个新行,其中一行用于常规费率,另一行用于加班费。如果这很重要,那么这不是您的答案。但至少您将能够识别综合日以及综合日之前和之后的日期。
首先,至关重要的是,您要先按员工排序,然后再按日期排序。尽管您在评论中给出了答案,但我还是认为您只有一个图表,其中包含大量员工和超过一周的数据。
您提供了 A 至 D 列。
Column E: blank
Column F: "Week" =WEEKNUM(B2+1)
Column G: "New Person New Week Row Num" =IF(AND(A2=A1,F2=F1),G1,ROW())
Column H: "Running Total Per Person Per Week" =SUM(INDIRECT(ADDRESS(G2,4)):D2)
Column I: "Regular Rate" =IF(H2<48,D2,D2-J2)
Column J: "OT Rate" =IF(AND(G2=G1,H1>48),D2,IF(H2>48,H2-48,0))
F 列:“周”只是告诉我们要处理的是一年中的哪一周。您提供的数据从星期六开始(这很奇怪),这就是为什么它里面有“+1+”。
G 列:“新员工新一周行号”基本上告诉 Excel 新员工和/或新一周何时开始,以便我们在每个新一周开始时或处理新员工时重新开始计算小时数。
H 列:“每人每周累计总数”依赖于 G 列,并将统计该人在该周的累计小时数。
第一列:“正常工资率”表示,如果迄今为止工作的总小时数少于 48 小时,那么当天的全部工作都是正常工资率,但是,如果迄今为止工作的总小时数超过 48 小时,那么只计算当天不属于加班的那部分工作。
J 列:“加班率”表示,如果我们仍在同一周与同一个人打交道,并且如果该人在前一天加班(单元格 J2 查看单元格 H1),那么今天的全部时间也必须加班,否则,将迄今为止的工作时间减去 48,该数额就是今天的综合加班。