Каждое утро я получаю файл Excel, который мне нравится сортировать более логично.Все заголовки столбцов всегда одинаковы, но количество строк может измениться.
Я пытаюсь собрать макрос, который выделяет весь регион (начиная с B2).Необходимо отсортировать столбец C (по возрастанию), G (по убыванию), H (по возрастанию) и I (по убыванию).
Я начал с использования устройства записи макросов и сейчас пытаюсь очистить выдаваемый код.
Пока мне удалось собрать код, который выбирает регион от B2 довправо, а затем вниз.Затем, при определении критериев сортировки для каждого столбца, я попытался убедиться, что выбранный диапазон идет из верхней части списка в строке 3 (строка 2 имеет заголовки, строка 3 является первым элементом в списке), а затем динамически выбираетсявниз для каждого соответствующего столбца.Тем не менее, после оператора With
я изо всех сил пытаюсь добиться того, чтобы диапазон был динамическим (это все еще только статический диапазон, записанный макросом).
Я также получаю «Ошибка времени выполнения» 1004: ошибка приложения или объекта »после .Apply
.
Sub Macro1()
Range("B2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("G3",
Range("G3").End(xlToRight)) _
, SortOn:=xlSortOnValues, Order:=xlDescending,
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C3",
Range("C3").End(xlToRight)) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("H3",
Range("H3").End(xlToRight)) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("I3",
Range("I3").End(xlToRight)) _
, SortOn:=xlSortOnValues, Order:=xlDescending,
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("B2:Q31") ' NOT SURE HOW TO MAKE DYNAMIC HERE
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply ' GETTING ERROR HERE
End With
End Sub