Excel VBA – 将不同的时间戳分成10分钟的括号

处理数据集 – 示例在这里:

Device Name | Time | Time Bracket ID 1 |06:24:03 | ID 1 |06:24:05 | ID 1 |06:31:03 | ID 1 |06:54:58 | ID 1 |06:55:00 | ID 1 |06:59:12 | ID 1 |07:24:14 | ID 1 |07:24:15 | ID 1 |07:32:12 | ID 1 |11:07:18 | ID 1 |11:21:27 | ID 1 |11:32:12 | ID 1 |11:32:13 | ID 1 |11:36:01 | ID 2 |07:05:55 | ID 2 |07:05:56 | ID 2 |07:22:15 | ID 2 |08:32:49 | ID 2 |08:32:51 | ID 2 |09:05:22 | ID 2 |10:11:24 | ID 2 |10:11:26 | ID 2 |11:34:41 | ID 2 |11:42:34 | ID 2 |11:42:35 | ID 2 |12:50:40 | 

我试图实现的是适合每个行到时间戳聚合列…

举例来说,从07:00:00到07:09:59的任何内容都被覆盖在括号07:00:00的第3列07:10:00到07:19:59将是07:10:00,等等。

我想不出一个可以做到这一点的公式,所以我把它带到了VBA。

我明白,我需要迭代列B,并为每个,看看价值,并使用case语句,以确定它应该去。

简单地说,我不想创build24 * 6 = 144 case / if语句。

我希望它只查看分钟值,然后确定它是否适合6个时间段(*:00,*:10等)中的一个,并将该小时replace为从该值读取的小时。

所以我试图实现这样的东西:

  Sub time_cater() For i = 1 To Rows.count Select Case Range("Ci").Value Case "**:0*:**" 'Range("Ci").Value = Range("Ci").SUBSTRING(**)+:10:00 Next i End Sub 

而且显然更多…

问题是我不知道如何实现子串部分…如果没有,我想我会去做144个case语句,但是必须有一个更优雅的解决scheme。

编辑:我也完全不确定Ci部分是否会工作…我希望它通过行C(这是我的工作表上的C),看看计数器的数字。

我把这个传给你,亲爱的人! 提前谢谢大家的帮助。

您可以通过Excel函数来完成这个包围,因为知道B列中的数据是DateTime。 我会这样做的方式是:

 =HOUR(B2) &"_"& INT(MINUTE(B2)/10) 

这将创build可用于过滤/sorting的括号。

希望是有道理的。