Как я могу отсортировать заголовки столбцов вместе со значениями от A до Z (по алфавиту) с VBA в Excel - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь запустить макрос из sheet1, чтобы отсортировать столбец по заголовкам от A до Z, используя VBA в sheet2. Любой может помочь мне выяснить это.

Demo Image

Sub Macro1()
Range("C10:K13").Select
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add Key:=Range("C10:K10") _
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet2").Sort
    .SetRange Range("C10:K13")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlLeftToRight
    .SortMethod = xlPinYin
    .Apply
End With
End Sub

1 Ответ

0 голосов
/ 24 марта 2020

Насколько я знаю, вы не можете сортировать по горизонтали, поэтому я преобразовал ваш диапазон в вертикальный, чтобы отсортировать и вернуть исходное значение после сортировки через transpose function, это мой подход:

Sub Test()
Dim rng As Range, transposeRng As Range
Set rng = sheets("Sheet2").[C10:K10]: Set transposeRng = sheets("Sheet2").[M6].Resize(rng.Columns.Count, rng.Rows.Count)
transposeRng.Value = Application.Transpose(rng)

    ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet2").Sort.SortFields.Add2 Key:=transposeRng.Columns(1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet2").Sort
        .SetRange transposeRng
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    transposeRng.Clear
    rng.Value = Application.Transpose(transposeRng)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...