如何在两个日期周期和时间周期之间定义变量?

时间:2019-01-06 19:02:33

标签: excel vba date time

因此,我正在尝试定义一个或多个变量,以便可以轻松过滤数据集。本质上,我需要按数据集中的日期/时间进行过滤。数据集中日期和时间的格式如下:2019-01-03 8:45:30 PM

我想要做的是定义一个变量,以便始终根据当前日期过滤数据。我的数据每天都在变化,因此我的参考点是今天的日期。从本质上讲,我需要过滤从2天前上午11点到昨天上午10点为止的数据。我将如何定义变量?我尝试执行以下操作:

Dim StandardH As Date
StandardH = Date - 1 + (1 / 24) 

直到上午10点一直执行相同的操作,一直执行-(1/24)至上午11点,但这似乎不起作用。

我意识到可能有一种更简单的方法。有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

在VBA中:

  • “ 2天前上午11点”翻译为Date - 2 + TimeSerial(11, 0, 0)
  • “昨天上午10点”翻译Date - 1 + TimeSerial(10, 0, 0)

这与代码运行的日期和时间有关,并假设“ 2天前”是指“昨天前一天”。

如果我在"Sheet4"上有一些"B7:B17"范围内的日期(假设单元格B6中有一个标题),那么我想我可以使用下面的代码从(并包括)2天前的11 AM,直到(包括)昨天的10 AM:

Option Explicit

Sub FilterDatesInclusively()

    With ThisWorkbook.Worksheets("Sheet4")
        .AutoFilterMode = False

        Dim fromDate As Date
        fromDate = Date - 2 + TimeSerial(11, 0, 0)

        Dim toDate As Date
        toDate = Date - 1 + TimeSerial(10, 0, 0)

        .Range("B6:B17").AutoFilter Field:=1, Criteria1:=">=" & CDbl(fromDate), Operator:=xlAnd, Criteria2:="<=" & CDbl(toDate)
    End With

End Sub

也许有一些不转换为两倍的过滤方法,但我无法解决。