Почему мой макрос сортировки данных не выполняет сортировку в правильном порядке? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть очень простой VBA-код

    With ActiveSheet.Sort
        .SortFields.Add Key:=Range("Stage"), Order:=xlAscending
        .SortFields.Add Key:=Range("Category"), Order:=xlAscending
        .Header = xlYes
        .Apply
    End With

Насколько я понимаю, например, эта фиктивная таблица

    Stage    Category
   1-First   2-Finance
   4-Fourth  2-Finance
   2-Second  3-Operations
   1-First   1-Strategy

должна быть отсортирована как

    Stage    Category
   1-First   1-Strategy
   1-First   2-Finance
   2-Second  3-Operations
   4-Fourth  2-Finance

Тем не менее, когда я запускаю макрос, я получаю

    Stage    Category
   1-First   1-Strategy
   1-First   2-Finance
   4-Fourth  2-Finance
   2-Second  3-Operations

Почему Категория получает предпочтение?

1 Ответ

1 голос
/ 28 апреля 2020

Этот работает для меня, используя ваши данные. Добавьте параметр .SetRange.

Sub test()
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    With ActiveSheet.Sort
        .SetRange Range("A1:B5")
        .SortFields.Add Key:=Range("Stage"), Order:=xlAscending
        .SortFields.Add Key:=Range("Category"), Order:=xlAscending
        .Header = xlYes
        .Apply
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...