Как выбрать все строки в нижней части таблицы, которые соответствуют сегодняшней дате - PullRequest
0 голосов
/ 21 января 2020

Я хотел бы иметь макрос VBA в Excel, который копирует все целые строки, где значение в 10-м столбце соответствует сегодняшней дате, и вставляет их в другой лист. Учитывая, что таблица имеет хронологическое ранжирование, самые последние даты находятся внизу таблицы, и поэтому действие Find должно начинаться с последней строки таблицы, чтобы быть более эффективным.

У меня пока есть следующий код в VBA:

Sub Test()

Dim TodaysDate As Date
Dim LastRows As Long

TodaysDate = Sheets("Sheet1").Range("B28")

LastRows = Sheets("Sheet1").Columns(10).Find(What:=TodaysDate, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row

Rows(LastRows).Copy
Sheets("Sheet2").Range("A1").Paste


End Sub

1 Ответ

0 голосов
/ 21 января 2020

Как прокомментировано, вместо того, чтобы пытаться найти верхнюю и нижнюю часть диапазона где-то на вашем листе, было бы лучше вместо .AutoFilter ваших данных по вашим критериям. Это означает, что у вас будет только необходимое отображение данных. Затем вы можете использовать .SpecialCells(XlCellTypeVisible), чтобы скопировать все ячейки, находящиеся в данный момент на экране, и скопировать их на другой лист. Это пример кода, который не соответствует вашим потребностям, но должен отображать концепцию:

Sub filtercophee()

With Sheet1.Range("A1:J12")
    .AutoFilter Field:=10, Criteria1:="=" & DateValue(Now), Operator:=xlAnd
    .SpecialCells(xlCellTypeVisible).Copy Sheet2.Range("a1")
End With

Sheet1.AutoFilterMode = False

End Sub
...