计算两个时间范围之间的重叠分钟数

我有一个Excel电子表格,我有一个事件的开始和结束date。 我想生成一个按date范围分组的结果。 结果将是8小时大块,例如我想知道事件的范围有多less分钟:15:00至23:00,23:00至07:00以及07:00至15:00。

因此,16:00开始,23:30结束(7小时30分钟)的活动将在15:00-23:00之间进行,时间为7小时。 在23:00至07:00的时候,这个事件也会有0.5个结果小时。

这里是我所拥有的示例截图,以及我期望的值

在这里输入图像说明 我需要在我的三个分组时间范围单元中放入什么样的公式才能获得我想要的结果? (使用AG栏作为参考)。

谢谢

编辑:复制/粘贴示例电子表格:

链接到复制粘贴的示例电子表格

只需复制输出表js小提琴创build并粘贴到excel。

原始码:

start end duration minutes dur 15:00 until 23:00 23:00 until 07:00 07:00 until 15:00 08/12/2013 14:15 08/12/2013 17:15 03:00 180 08/12/2013 12:00 08/12/2013 15:00 03:00 180 08/12/2013 11:30 08/12/2013 14:10 02:40 160 08/12/2013 11:30 08/12/2013 14:10 02:40 160 08/12/2013 00:00 08/12/2013 03:00 03:00 180 07/12/2013 19:45 08/12/2013 02:00 06:15 375 07/12/2013 17:15 07/12/2013 20:15 03:00 180 07/12/2013 14:55 07/12/2013 17:55 03:00 180 07/12/2013 14:30 07/12/2013 17:10 02:40 160 07/12/2013 14:30 07/12/2013 17:10 02:40 160 

我们看两个时间段,S(=样本)和R(=参考),它们开始(B)和结束(E)

 Reference x-----x x-----x x-----x x-----x ooo oo ooo ooooooo Sample 1-1 2-2 3---3 4--4 5-5 6---------6 

看我们可以这样说的情况

  • 如果ES <BR或BS> = BR …则不存在重叠(情况1,2)
  • 在所有其他情况下,重叠的周期开始于MAX(BR,BS)并结束于MIN(ER,ES)

另外,随着参考周期在午夜过后,我们必须“标准化”采样和参考时间。

参考时间input为

  • 第0期:BR =0+7/24 ,ER =0+15/24 …我们从最低的一天开始
  • 第一阶段:BR =0+15/24 ,ER =0+23/24
  • 第二阶段:BR =0+23/24 ,ER =1+7/24
  • 第三周期:BR =1+7/24 ,ER =1+15/24 …捕捉周期

(如果采样时间很长,则可能需要包括第一天的另一个15-23周期)

采样时间标准化为

  • BS(标准) =BS-INT(BS) …摆脱date部分
  • ES(标准) =ES-INT(BS) …减去开始date捕捉date翻转的!

应用上述情况,重叠间隔可以计算为

  • F4: =A4-INT(A4)
  • G4: =B4-INT(A4)
  • I4 … L4: =IF(OR($G4<I$2;$F4>=I$3);0;MIN(I$3;$G4)-MAX(I$2;$F4))

(所有公式复制为横过/下来复制)

在这里输入图像说明

我希望我没有忽视任何特殊情况….

当然也有一些限制,例如,大于所有4个参考周期的采样周期一起将不会被正确处理,因为它们将会下降两倍,甚至更多的时间到达相同的参考周期,而这个周期不是由这个参考周期处理的(除非您不断增加更多的周期到第1,2,3天的权利 – 不是非常性感)…如果这是一个案件被认为是时候看看VBA解决scheme。