2008-12-05 5 views
1

У меня есть таблица с большим объемом информации, как выбрать только последние месяцы? (т.е. только последние 31 ячейки в столбце?)в прошлом месяце в VBA Excel

Данные в виде

date1  numbers 
date2  numbers 
.    . 
.    . 
.    . 
daten  numbers 

, где date1 является дд/мм/ввгг

веселит

ответ

2

В идеале будет столбец с указанием даты в нем. Затем вы можете сделать расширенный фильтр для фильтрации в диапазоне дат, который вам нужен. Выбор последних 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 
+0

спасибо, вот на самом деле, что мне нужно - у меня уже есть столбец с датой в ней - как бы я написать фильтр в VBA? – 2008-12-05 15:22:59

1

использование

LastRow = Sheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row 

тогда вы можете получить диапазон от LastRow-31 до LastRow , если у вас есть дата e, как указано, затем переместите начальную точку вперед до значения даты = даты (если (now.month = 1, now.year-1, now.year), if (now.month = 1,12, now.month-1), now.day)

Смежные вопросы