我有一个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小时。
这里是我拥有的示例屏幕截图,以及我期望的值
我需要将哪种公式放入我的三个分组时间范围单元格中以获得我想要的结果? (使用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
答案 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
查看我们可以说的案例
另外,随着参考期间在午夜滚动,我们必须“标准化”样本和参考时间。
参考时间输入为
=0+7/24
,ER =0+15/24
...我们从最低的一天时间开始=0+15/24
,ER =0+23/24
=0+23/24
,ER =1+7/24
=1+7/24
,ER =1+15/24
...以捕捉期间滚动(如果采样周期非常大,则必须包括第1天的另外15-23周期)
将采样时间标准化为
=BS-INT(BS)
...摆脱日期部分=ES-INT(BS)
...减去开始日期以捕捉日期翻转!!!“应用上述情况,重叠间隔可以计算为
=A4-INT(A4)
=B4-INT(A4)
=IF(OR($G4<I$2;$F4>=I$3);0;MIN(I$3;$G4)-MAX(I$2;$F4))
(所有公式都是复制 - 用于跨/向下复制)
我希望我不会忽视任何特殊情况......
当然有限制,例如大于所有4个参考期的样本期间将不会得到妥善处理,因为它们会在相同的参考期内掉落两次甚至更多次,而这个期间不会由此处理(除非您在第1天向右侧添加更多期间, 2,3,...... - 不是很性感)...如果这是一个需要考虑的情况,那么现在就来看看VBA解决方案了。