计算时间间隔时间列表直到下一个时间标记超过x分钟

时间:2014-07-16 14:43:36

标签: excel vba formula

这是我们的数据样本,其中A是时间戳,B是开始时间,C是结束时间。

~~~A~~~~~~~~~~B~~~~~~~~~~C~~~~~~~~~        
14:44:09  14:44:09    
14:45:03
14:45:43
14:46:32
14:47:41
14:48:22
20:03:35  20:03:35    
20:07:03
20:13:41
20:14:12
20:15:06
20:16:12
21:13:41  21:13:41    
21:14:52
21:35:18 

在C1,我希望时间戳为14:48:22。该时间是由规则明确选择的,如果两个时间戳之间的时间差大于10分钟,那么较小的时间戳会写在该系列的开头#34;在这种情况下,这将是C2。为了说明我的观点,请参见下文。

~~~A~~~~~~~~~~B~~~~~~~~~~C~~~~~~~~~        
14:44:09  14:44:09    14:48:22
14:45:03
14:45:43
14:46:32
14:47:41
14:48:22
20:03:35  20:03:35    20:16:12
20:07:03
20:13:41
20:14:12
20:15:06
20:16:12
21:13:41  21:13:41    21:35:18
21:14:52
21:35:18 

提前谢谢。

1 个答案:

答案 0 :(得分:0)

B栏相对容易:

B1 只是=A1
B2 =IF(A2>A1+TIME(,10,),A2,""),会根据之前的时间检查旁边的时间,如果超过10分钟,请将时间放在单元格中,否则请将空字符串< / p>

C列更有趣

首先,我们需要找到B列中显示的下一个时间段,使用here的答案给出了我们:

INDEX(B2:B15,MATCH(TRUE,INDEX((B2:B15<>""),0),0))

现在我们有了这个值,我们使用MATCH在A列中找到它,从该位置减去1得到上一次,然后报告。

=INDEX(A2:A15,MATCH(INDEX(B2:B15,MATCH(TRUE,INDEX((B2:B15<>""),0),0)),A2:A15,0)-1,0)

我们将它包装在IF语句中,以确保当B中的相应单元格为空时它是空白的,并且我们最终在C1中看到一个非常可怕的公式:

=IF(B1="","",INDEX(A2:A15,MATCH(INDEX(B2:B15,MATCH(TRUE,INDEX((B2:B15<>""),0),0)),A2:A15,0)-1,0))

这个等式的唯一缺点是最后一个结果给出#N/A,但你可以手动修复它,或用 IFERROR 语句包装公式,给出庞然大物等式:

=IFERROR(IF(B1="","",INDEX(A2:A15,MATCH(INDEX(B2:B15,MATCH(TRUE,INDEX((B2:B15<>""),0),0)),A2:A15,0)-1,0)),MAX(A:A))

向下复制 B2 ,向下复制 C1 以获得您请求的结果。调整公式中的B15和A15以匹配您的完整数据集。