处理数据集 - 此处示例:
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的任何内容都包括在第3栏07:00:00到07:19:59的07:00:00的支架中:00,等等。
我无法想到一个可以做到这一点的公式,所以我接手了VBA。
我理解我需要迭代B列,并为每个列查看值,并使用case语句来确定它应该去哪个。
简单地说,我不想创建24 * 6 = 144个case / if语句。
我希望它只查看分钟值,然后确定它是否应该适合6个时间段之一(*:00,*:10等),并将小时替换为从中读取的小时数价值。
所以我尝试实现这样的东西:
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个案例陈述,但必须有是一个更优雅的解决方案。
编辑:我也完全不确定Ci部分是否可行...我希望它通过C行(它在我的工作表上的C),并查看计数器的编号。
亲爱的人们,我把它传给你了!提前感谢大家的帮助。
答案 0 :(得分:1)
您可以通过Excel函数完成此包围,知道B列中的数据是DateTime。我这样做的方式是:
=HOUR(B2) &"_"& INT(MINUTE(B2)/10)
这将创建可用于过滤/排序的括号。
希望这是有道理的。