Мне нужно отсортировать данные в VBA, используя несколько столбцов в качестве ключей, но количество столбцов заранее неизвестно.
Я пытался использовать метод sheets.sort
и использовать .sortfields.add
в цикле for, но это не имело никакого эффекта.
Вот код, используемый для сортировки данных:
For sh = 1 To 2
Sheets(sh).Sort.SortFields.Clear
For i = 1 To idSize
Sheets(sh).Sort.SortFields.Add Key:=Sheets(sh).UsedRange.Columns(idList(sh)(i)) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
Next i
With Sheets(sh).Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
Next sh
где sh
перебирает листы в рабочей книге, а числовой индекс каждого столбца, который будет использоваться в качестве ключа, находится в idList
. Например, idList(2)(1)
представляет индекс столбца из листа 2, который должен быть основным ключом сортировки.
Этот код не приводит к сортировке вообще.