




использовать
LastRow = Sheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row
тогда вы можете получить диапазон от LastRow-31 до LastRow если у вас указанная дата, переместите начальную точку вперед до значения date = date (if (now.month = 1, now.year-1, now.year), if (now.month = 1,12, now) .месяц-1), сейчас. день)
В идеале должен быть столбец с датой. Затем вы можете сделать расширенный фильтр, чтобы отфильтровать нужный диапазон дат. Если выбрать последний 31 день, не всегда будет выбран только один месяц. Также можно выбрать до 3 дней с предыдущего месяца.
Public Sub selectLastMonth()
Dim ws As Worksheet
Dim dStart As Date, dEnd As Date
Set ws = ActiveSheet
ws.Range("A:B").Sort key1:=ws.Range("A2"), header:=xlYes
dEnd = ws.Range("A1").End(xlDown).Value
dStart = DateSerial(DatePart("yyyy", dEnd), DatePart("m", dEnd), 1)
ws.Range("A:B").AutoFilter field:=1, Criteria1: = "> = " & dStart, Operator:=xlAnd, Criteria2: = "< = " & dEnd
Set ws = Nothing
End Sub
спасибо, это действительно то, что мне нужно - у меня уже есть столбец с датой в нем - как мне написать фильтр в vba?