VBA中的舍入日期和时间

Ahs*_*han 5 excel vba excel-vba

如何使用VBA在excel中舍入日期和时间?

例如,用户从日历中选择复制的值,单元格A6 ="08/25/2016 09:02:00"

我在15分钟的间隔内提取数据,所以我希望它是A6 ="08/25/2016 09:00:00"

因此,如果用户选择的任何日期和时间不是15分钟的倍数,则应该返回到之前的15分钟间隔值并拉取数据.

Com*_*ern 6

拉出分钟,将日期部分放在地板上以摆脱时间,然后通过使用 TimeSerial 构建它来添加它:

Private Sub Example()
    Dim foo As Date
    foo = CDate("08/25/2016 09:02:00")

    Dim minutes As Long
    minutes = Minute(foo)
    minutes = 15 * (minutes \ 15)  'Round down by 15 minute increments

    foo = Int(foo) + TimeSerial(Hour(foo), minutes, 0)
    Debug.Print foo
End Sub
Run Code Online (Sandbox Code Playgroud)

编辑:就像@Pekka 提到的,这也可以用工作表公式来完成 - 这相当于上面的代码 VBA:

=INT(A6)+TIME(HOUR(A6),INT(MINUTE(A6) / 15) * 15, 0)
Run Code Online (Sandbox Code Playgroud)