将计算重叠date数组中的总小时数的公式

我一直在试图解决一个问题,现在我只是没有得到我需要的结果。 我有一个电子表格,可以在一个机械工厂里捕捉劳动时间,我想知道每个工匠有多less个小时的劳动。 系统使用公开的工单来计算劳动时间,但是它允许一个机械师开放多个工单,而这些工单的date/时间通常是重叠的。

例如,A机师同一天开三个工单:

WO #1 opened on 5/1/2015 @ 12:00 noon, closed at 4 pm. WO #2 opened on 5/1/2015 @ 1pm and closed at 6pm. WO #3 opened on 5/1/2015 @ 2pm, closed @ 3pm. 

系统将计算4小时的WO# 5小时的WO#2,1小时的WO#3总共10小时的劳动。 实际上,由于WO时间重叠,机械师只做了6小时的劳动。

我需要的是一个公式:(1)指出重叠发生的地方;(2)计算实际的劳动时间,而不是系统的劳动时间。

我希望能指出发生重叠的地方以及可以计算/返回实际小时数的内容。 这在一次性的基础上很容易做到,但是我正在处理大量的数据集,并且手动进行这些计算花费了大量的时间。 我玩MIN / MAX和SUMPRODUCT,但我似乎无法得到公式,以返回我正在寻找的结果。

示例数据图像以供参考: 样本数据

举个例子,假设B2:B6开始时间/date和C2:C6结束时间/date,你可以使用这个公式来得到总的(不重叠的)小时

=SUMPRODUCT((COUNTIFS(B2:B6,"<"&MIN(B2:B6)+ROW(INDIRECT("1:"&ROUND((MAX(C2:C6)-MIN(B2:B6))*1440,0)))/1440-1/2880,C2:C6,">"&MIN(B2:B6)+ROW(INDIRECT("1:"&ROUND((MAX(C2:C6)-MIN(B2:B6))*1440,0)))/1440-1/2880)>0)+0)/60

以十进制小时数显示结果。

对于这个例子,我假设你想使用整个范围 – 如果你想要的话,你可以在公式中添加另一个标准,只计算一个特定的机制

该公式实际上testing在每个时间段内的每一分钟,看看它是否存在于一个时间段,如果是这样的话,它被计数….但只有一次 – 见截图:

在这里输入图像说明

至于你的问题的第二部分,“计算实际的劳动时间,而不是系统的劳动时间”,并假设数据是这样的:

在这里输入图像描述

公式可能是=MAX(B2:C4)-MIN(B2:C4)需要更多关于如何显示“重叠”的信息,即条件格式化等。