#excel #vba #sorting
Вопрос:
Я использую следующий код для сортировки 5 столбцов с различными объемами данных на основе строки в столбце 1:
Private Sub SortFields()
Dim xlWS as Excel.Worksheet
Set xlWS = ActiveWorkbook.Worksheets("Sheet1")
xlWS.sort.SortFields.Clear
xlWS.sort.SortFields.Add Key:=xlWS.Range("B6:B22"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With xlWS.sort
.SetRange xlWS.Range("B6:F22")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Типы данных столбцов этот метод сортирует по порядку: числа, обрабатываемые как строки (например, 10-100-02), дата, другая дата, строка, представляющая цвет (обычно зеленый, желтый, красный), и строка. Все правильно сортируется по столбцам, за исключением столбца цвета. Строки данных цветового столбца переворачиваются сверху вниз при каждом запуске метода. Например, если необходимо отсортировать 4 строки данных и цвет нижней строки желтый, при запуске метода сортировки желтый цвет переместится в верхнюю строку, несмотря на правильную сортировку всех других данных, и снова вернется к нормальному состоянию, если сортировка будет выполнена во второй раз.
Это не самая большая проблема, так как вы можете просто запустить метод дважды, чтобы сортировка выглядела правильно, но есть ли хорошее решение, помимо простого запуска метода дважды каждый раз, когда мне нужно сортировать данные?
Комментарии:
1. Если ваш диапазон
B6:F22
не включает заголовки, попробуйте.Header = xlNo