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

时间:2015-06-01 16:33:16

标签: excel excel-formula

我一直试图解决问题一段时间,而我只是没有得到我需要的结果。我有一个电子表格,可以在机械车间捕获工时,我想知道每个机械师需要多少小时的劳动力。系统使用开放式工单来计算工时,但是它允许一个机械师打开多个工单并且这些工单的日期/时间经常重叠。

例如,Mechanic 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.

系统将计算WO#1的4小时的总工时,WO#2的5小时和WO#3的1小时的总工时{ {1}}小时劳动实际上,由于WO时间重叠,机械师只进行了10小时的劳动。

我需要的是一个公式,1)指出重叠发生的地方和2)计算实际工时,而不是系统工时。

我想要指出重叠发生的地方以及可以计算/返回实际小时数的东西。这很容易在你的脑海中一次性完成,但我正在处理大型数据集,手动进行这些计算需要花费大量时间。我玩过MIN / MAX和SUMPRODUCT,但我似乎无法得到公式来返回我正在寻找的结果。

样本数据图片供参考: Sample Data

2 个答案:

答案 0 :(得分:3)

对于您的示例,假设B2:B6中的开始时间/日期和C2:C6中的结束时间/日期,您可以使用此公式来获取总计(非重叠)小时数

=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

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

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

该公式实际上测试了该时间段内的每一分钟,以查看它是否存在于其中一个时间段内,如果是这样,它只计算一次......但只有一次 - 见截图:

enter image description here

答案 1 :(得分:-1)

关于问题的第二部分,“计算实际工时,而不是系统工时”,并假设数据的布局如下:

enter image description here

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