Как определить переменную между 2 периодами даты и периодами времени? - PullRequest
0 голосов
/ 06 января 2019

Итак, я пытаюсь определить переменную или несколько переменных, чтобы я мог легко фильтровать мой набор данных. По сути, мне нужно фильтровать по дате / времени в моем наборе данных. Формат даты и времени в наборе данных таков: 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 голосов
/ 06 января 2019

В VBA:

  • "2 дня назад в 11 утра" переводится как Date - 2 + TimeSerial(11, 0, 0)
  • «Вчера в 10 часов утра» переводится Date - 1 + TimeSerial(10, 0, 0)

Это связано с датой и временем выполнения кода и предполагает, что «2 дня назад» означает «день до вчерашнего дня».

Если бы у меня было несколько дат "Sheet4" в диапазоне "B7:B17" (предположим, что в ячейке B6 есть заголовок), то, я думаю, я мог бы использовать приведенный ниже код для фильтрации (и включая) 2 дня назад в 11:00, до (включая) вчера в 10:00:

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

Может быть, есть какой-то способ фильтрации без преобразования в удвоение, но я не смог разобраться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...