Сортировка данных в несколько столбцов - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь отсортировать данные в несколько столбцов (9, если быть точным).По сути, мне нужно отсортировать их по отдельному # (номеру сортировки), оставив остальную информацию в оставшихся столбцах выровненной по номерам сортировки.Я попытался записать это как макрос и извлечь код, но когда я попытался воссоздать этот код, используя относительный выбор ячеек, я потерпел неудачу.Я прикрепил скриншот документа Excel, с которым я работаю.

Снимок экрана

Диапазон ("B6"). Выберите

Range(Cells(Selection.Column, 2), Cells((Selection.Column), 26)).Select
ActiveWorkbook.Worksheets("Liability.VarAnn & Other").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Liability.VarAnn & Other").Sort.SortFields.Add Key _
    :=Range(Cells(Selection.Column, 2), Cells((Selection.Column), 26)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
With ActiveWorkbook.Worksheets("Liability.VarAnn & Other").Sort
    .SetRange Range(Cells(Selection.Column, 2), Cells((Selection.Column), 26))
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

End Sub

Если кто-то может помочь, заранее спасибо!

1 Ответ

1 голос
/ 20 июня 2019

Sort работает путем определения региона, который нужно отсортировать, а затем сортировки по ключу в определенном столбце:

.Range(.Cells(1,1),.Cells(lr,lc)).Sort key1:=Range(.Cells(1,"H"),.Cells(lr,"H")), order1:=xlAscending, Header:=xlNo

Так что если вам нужно ограничить один из этих двух диапазонов, вы можете, не влияяданные не в регионе для сортировки (сверху, .Range(.Cells(1,1),.Cells(lr,lc))).

Если я хочу отсортировать только столбец H диапазона, а не A1 по последнему столбцу (lc) и последней строке (lr), Я мог бы:

.Range(.Cells(1,"H"),.Cells(lr,"H")).Sort key1:=Range(.Cells(1,"H"),.Cells(lr,"H")), order1:=xlAscending, Header:=xlNo

Также см. Как избежать использования Select в Excel VBA .

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