Код VBA, который сортирует данные, кажется, неожиданно игнорирует некоторые столбцы / ячейки - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть лист с данными в столбцах A2:Q and U2:AC.Оба эти диапазона имеют сотни строк данных.У меня есть код, который сортирует эти данные по столбцам C и V.

Каждая строка содержит идентификационный номер и информацию о компании.Однако, похоже, что некоторые столбцы в пределах диапазонов не сортируются, поэтому после сортировки значения этих столбцов не совпадают с номером компании / идентификатора, с которым они были изначально выровнены.

EG. Если строка 5 имеет идентификатор 10456, имя "tomato" и дату открытия January 10, то при сортировке столбцы с именем и идентификатором будут отсортированы, а столбец сдата открытия не перемещается, поэтому она больше не соответствует правильному идентификатору и имени.

Вот мой код:

With ActiveSheet.Sort
    Range("A2").Sort Key1:=Range("C2"), Order1:=xlAscending, Header:=xlYes
    .Apply
End With

With ActiveSheet.Sort
    Range("U2").Sort Key1:=Range("V2"), Order1:=xlAscending, Header:=xlYes
    .Apply
End With

Я использовал этот код с тремя наборами данных без проблем (все столбцы и данные были отсортированы правильно), но теперь я сталкиваюсь с этой проблемой.

1 Ответ

0 голосов
/ 07 февраля 2019

Вы должны указать полный диапазон, который хотите отсортировать:

Private Sub SortMyRanges()
    Dim lastRow As Long
    With ActiveSheet
        lastRow = .UsedRange.Row + .UsedRange.Rows.Count - 1

        .Range("A2:Q" & lastRow).Sort _
            Key1:=.Range("C2"), _
            Order1:=xlAscending, _
            Header:=xlYes, _
            Orientation:=xlTopToBottom

        .Range("U2:AC" & lastRow).Sort _
            Key1:=.Range("V2"), _
            Order1:=xlAscending, _
            Header:=xlYes, _
             Orientation:=xlTopToBottom

    End With
End Sub
...