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

时间:2014-01-30 15:41:31

标签: excel excel-formula

我有一个excel电子表格,我有一个事件开始和结束日期。我想生成按日期范围分组的分钟结果。结果将是8小时的块,例如我想知道事件在该范围内的分钟数: 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小时。

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

enter image description here 我需要将哪种公式放入我的三个分组时间范围单元格中以获得我想要的结果? (使用A-G栏作为参考)。

由于

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

link to example spreadsheet for copy paste

只需复制小提琴创建的输出表js并粘贴到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

1 个答案:

答案 0 :(得分:1)

我们看两个时间段,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 OR BS> = BR ......没有重叠(案例1,2)
  • 在所有其他情况下,重叠时段从MAX(BR,BS)开始,到MIN(ER,ES)结束

另外,随着参考期间在午夜滚动,我们必须“标准化”样本和参考时间。

参考时间输入为

  • 第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
  • 第3期:BR =1+7/24,ER =1+15/24 ...以捕捉期间滚动

(如果采样周期非常大,则必须包括第1天的另外15-23周期)

将采样时间标准化为

  • BS(规范)=BS-INT(BS) ...摆脱日期部分
  • ES(规范)=ES-INT(BS) ...减去开始日期以捕捉日期翻转!!!“

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

  • 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))

(所有公式都是复制 - 用于跨/向下复制)

enter image description here

我希望我不会忽视任何特殊情况......

当然有限制,例如大于所有4个参考期的样本期间将不会得到妥善处理,因为它们会在相同的参考期内掉落两次甚至更多次,而这个期间不会由此处理(除非您在第1天向右侧添加更多期间, 2,3,...... - 不是很性感)...如果这是一个需要考虑的情况,那么现在就来看看VBA解决方案了。