Excel 中多个日期之间的时间间隔(以小时为单位)

Excel 中多个日期之间的时间间隔(以小时为单位)

我正在尝试找到一个公式来计算 Excel 中两个日期之间的营业时间。

营业时间为 09:00 至 17:00,不包括周末。

电子表格当前的布局如下;

A1: Start Time       -       B1: End Time   -       C1: Total Business hours
A2: 2016-01-04 10:31:17   -  B2: 2016-01-06 10:02:14

是否有一个公式可以用来计算时间差异(营业时间)并将其显示在 C2 中?

答案1

假设日期在同一年并且忽略小的舍入误差,我找到了一个可行的解决方案:

我先解释一下,然后添加下面的公式。

我将解决方案拆分为多个实例,如果

如果 1:日期在同一周

IF(WEEKNUMBER(A2)=WEEKNUMBER(B2);

如果 1.1:日期为同一天

IF(DAY(A2)=DAY(B2));

用结束日期的小时数减去开始日期的小时数=结果

(B2-A2)*24;

如果 1.2:日期不在同一天

将结束日期的天数减去开始日期的天数(=两个日期之间的天数),然后乘以 8(=17-9),再加上小时数差。MOD 函数用于截断日期的天数,只保留时间。

(DAY(B2)-DAY(A2))*(17-9)+(MOD(B2,1)-MOD(A2,1))*24);

如果 2:日期不在同一周

我计算中间几周的小时数,然后将开始日期的小时数添加到开始周的结束日期(幸运的是,一年从星期五开始,所以我只需执行 weeknumber(startdate)*7,最后我将从一周开始到结束日期的小时数添加到开始日期。

(WEEKNUMBER(B2)-WEEKNUMMER(A2)-1)*5*(17-9)+(WEEKNUMBER(A2)*7-QUOTIENT(A2;1))*(17-9)+17+(QUOTIENT(B2;1)-(WEEKNUMBER(B2)*7-4))*(17-9)+(MOD(B2;1)-MOD(A2;1))*24-9)

最后,您只需将所有这些代码放在一起,即可计算日期之间的营业时间。

答案2

这是另一个使用NETWORKDAYS函数的公式,它允许您指定假期,或者,如果您有更高版本的 Excel,您可以替换NETWORKDAYS.INTL以指定哪些天是您的周末。

  • 每个工作日算8小时
  • 减去上午 9 点和实际开始时间之间的时间
  • 减去实际结束时间和该日期下午 5 点之间的时间:

=NETWORKDAYS([@[Start Time]],[@[End Time]])*8/24-
([@[Start Time]]-(INT([@[Start Time]])+9/24))-
(INT([@[End Time]])+17/24-[@[End Time]])

由于我们调整为将时间表示为一天的几分之一,因此结果将采用 Excel 日期/时间格式,并且可以格式化为显示秒(如果您愿意)。

在此处输入图片描述

相关内容