#excel #vba #excel-2016
#excel #vba #excel-2016
Вопрос:
У меня есть код, предназначенный для сортировки динамических диапазонов. Первый оператор ‘With’ сортируется правильно, со вторым у меня возникают проблемы. Я не уверен, как правильно определить диапазон, который я хочу отсортировать. С помощью первого оператора ‘With’ я точно знаю, с какой ячейки начинать сортировку, A7. Однако из-за динамического характера данных я не знаю точного номера строки, с которой начнется второй набор данных. Поэтому я пытаюсь указать диапазон, начинающийся со столбца A в строке financeTopRow, и выполнить сортировку в нижней части этих данных.Вот мой код:
With mainSheet.Range("A7:N" amp; analyticsBottomRow)
.Cells.Sort Key1:=.Columns("A"), Order1:=xlDescending, _
Key2:=.Columns("N"), Order2:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
End With
With mainSheet.Range(("A" amp; financeTopRow), "K")
.Cells.Sort Key1:=.Columns("A"), Order1:=xlDescending, _
Key2:=.Columns("K"), Order2:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlNo
End With
Комментарии:
1. FWIW вызов элемента без параметров
.Cells
является избыточным.2. Похоже, вы хотите, чтобы этот второй был
mainSheet.Range("A" amp; financeTopRow amp; ":K" amp; financeBottomRow)
. Попробуйте перейти к этим диапазонам и нажать Ctrl T для форматирования в виде таблицы, затем используйтеListObject
API, чтобы вам никогда не нужно было определять, что такое «первая строка» и «последняя строка».3. У меня это сработало, спасибо