Ответ 1
Попробуйте этот код:
Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("A3:D" & lastrow).Sort key1:=Range("B3:B" & lastrow), _
order1:=xlAscending, Header:=xlNo
У меня есть таблица, которая может содержать любое количество строк:
Как я уже сказал, он может содержать 1 или ∞ строки.
Я хочу сортировать диапазон A3: D∞ ячейкой Date, которая находится в столбце B. Как это сделать?
Проблема в том, что я не знаю, как выбрать из A3 в последнюю строку.
Я думаю, что привязка к последней строке не является правильным методом.
У меня есть это до сих пор, это сортировка выглядит правильно, но диапазон жестко запрограммирован. Как избавиться от жесткого кодирования диапазона?
Range("A3:D8").Sort key1:=Range("B3:B8"), _
order1:=xlAscending, Header:=xlNo
Попробуйте этот код:
Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("A3:D" & lastrow).Sort key1:=Range("B3:B" & lastrow), _
order1:=xlAscending, Header:=xlNo
Или это:
Range("A2", Range("D" & Rows.Count).End(xlUp).Address).Sort Key1:=[b3], _
Order1:=xlAscending, Header:=xlYes
Если начальная ячейка диапазона и ключа статическая, решение может быть очень простым:
Range("A3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort key1:=Range("B3", Range("B3").End(xlDown)), _
order1:=xlAscending, Header:=xlNo