Сортировать строки по дате - PullRequest
0 голосов
/ 10 июля 2020

Я новичок в VBA и у меня проблема с таблицей. Если в моей таблице есть заголовок, а даты начинаются с столбца A2, размер таблицы составляет до R. Мне нужен способ автоматической сортировки строк по дате. Размер таблицы постоянно увеличивается, поэтому желательно расширить выбор, если это необходимо.

ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range( _
    "A2:A" & lastrow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
    .SetRange Range("A1:Q" & lastrow)
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
ActiveCell.SpecialCells(xlLastCell).Select

End Sub

1 Ответ

0 голосов
/ 10 июля 2020

Поместите данные в настоящую таблицу - выделите данные и выберите Вставить ~ таблицу на панели инструментов. Ваша таблица должна называться Table1 (вы можете изменить это вручную).

Sub Test()

    Dim MyTable As ListObject
    Set MyTable = ThisWorkbook.Worksheets("Sheet1").ListObjects("Table1")
    
    With MyTable
        .Sort.SortFields.Clear
        .Sort.SortFields.Add2 _
            Key:=Range("Table1[MyDateColumn]"), SortOn:=xlSortOnValues, Order:=xlAscending, _
            DataOption:=xlSortNormal 'Change MyDateColumn to the name of your date column.
            
        With .Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .Apply
        End With
    End With
    
End Sub

Вам не нужно включать xlPinYin метод

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