Multi-colonna di ordinamento con VBA

Sto usando VBA per ordinare le colonne in Excel 2003. Ho bisogno di ordinare le colonne 5 ascendente, quindi, colonna 3, utilizzando un ordine personalizzato, quindi da colonna 4 crescente. Sto avendo difficoltà a ottenere il tipo di lavoro e non ho assolutamente capire come OrderCustom si applica.

Puntatori nella giusta direzione sarebbe apprezzato 🙂 il Mio codice è sotto.

With wsData
    lastrow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
    lastCol = .Cells(4, Columns.Count).End(xlToLeft).Column

    Dim n As Long
    Application.AddCustomList ListArray:=Array("LOW", "MEDIUM OR HIGH", "HIGH ONLY")
    n = Application.GetCustomListNum(Array("LOW", "MEDIUM OR HIGH", "HIGH ONLY")) + 1

    Dim strSortOrder As String
    .Range(.Cells(1, 1), .Cells(lastrow, lastCol)).Sort _
        Key1:=.Range(.Cells(2, 5), .Cells(lastrow, lastCol)), Order1:=xlAscending, _
        Key2:=.Range(.Cells(2, 3), .Cells(lastrow, lastCol)), Order2:=xlDescending, _
        Key3:=.Range(.Cells(2, 4), .Cells(lastrow, lastCol)), Order3:=xlDescending, _
        OrderCustom:=n, _
        MatchCase:=False, Orientation:=xlSortColumns, Header:=xlYes
End With
InformationsquelleAutor Echilon | 2009-09-20



One Reply
  1. 3

    Tenta di dividere il proprio ordinamento in 3 distinte fasi, con solo il secondo mediante il criterio di ordinamento personalizzato, cioè

    .Range(.Cells(1, 1), .Cells(lastrow, lastCol)).Sort _
            Key1:=.Range(.Cells(2, 4), .Cells(lastrow, lastCol)), Order1:=xlDescending, _
            MatchCase:=False, Orientation:=xlSortColumns, Header:=xlYes
    
    .Range(.Cells(1, 1), .Cells(lastrow, lastCol)).Sort _
            Key1:=.Range(.Cells(2, 3), .Cells(lastrow, lastCol)), Order1:=xlDescending, _
            OrderCustom:=n, _
            MatchCase:=False, Orientation:=xlSortColumns, Header:=xlYes
    
    .Range(.Cells(1, 1), .Cells(lastrow, lastCol)).Sort _
            Key1:=.Range(.Cells(2, 5), .Cells(lastrow, lastCol)), Order1:=xlAscending, _
            MatchCase:=False, Orientation:=xlSortColumns, Header:=xlYes

    Nota che ho invertito l’ordine in cui questi tipi sono eseguite in confronto con il modo in cui sono dichiarate nella dichiarazione originaria.

    • Ah, evviva. Così il OrderCustom è per l’ordinamento.

Lascia un commento