Excel VBA - 将不同的时间戳分类为10分钟括号

时间:2016-06-14 12:52:53

标签: excel vba excel-vba

处理数据集 - 此处示例:

    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),并查看计数器的编号。

亲爱的人们,我把它传给你了!提前感谢大家的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

这将创建可用于过滤/排序的括号。

希望这是有道理的。