0

我有一个 Excel 表格,其中包含数千张事故单。每张票通常需要几个小时或几天的时间,我通常通过从关闭日期和时间减去开放日期和时间来计算总持续时间。

但是,我想考虑而不是计算下班时间(夜间)、周末和节假日。

因此,我创建了两个额外的参考表,其中一个包含非工作时间(例如每天晚上 7 点之后到早上 7 点,周六和周日全天,以及公共假期列表)。

现在我需要找到某种 VB 宏,它可以通过从总票务时间中删除任何属于该列表的时间来自动计算每张票的“实际持续时间”。

我浏览了这个网站和其他论坛,但是我找不到我要找的东西。如果有人可以帮助我实现这一目标,我将非常感激。

此致,

亚历克斯

4

1 回答 1

0

您可以使用NETWORKDAYS函数来计算间隔中的工作日数。实际上,您似乎已经为它做好了准备:它需要开始日期、结束日期和一个指向一系列假期的指针。默认情况下,它计算非周末的所有天数。

为了计算日内时间,您将需要一些额外的魔法。假设票只在上班时间打开和关闭,它看起来像这样:

first_day_hrs := dayend - ticketstart
last_day_hrs := ticketend - daystart
inbeetween_hrs := (NETWORKDAYS(ticketstart, ticketend, rng_holidays) - 2) * (dayend - daystart)

total_hrs := first_day_hrs + inbetween_hrs + last_day_hrs

当然,名称实际上应该是指 Excel 单元格。我建议使用列表和/或名称。

于 2013-06-25T06:39:21.850 回答