Ordinamento multiplo

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
luigivisini1980
00domenica 23 ottobre 2016 00:05
Avendo, per esempio, una tabella con due colonne di soli numeri (sia positivi che negativi) e utilizzando questo ordinamento:
1) Ordina per COLONNA_A in base a valori dal più grande al più piccolo
2) Quindi per COLONNA_B in base a valori dal più grande al più piccolo
ottengo questo risultato:
COLONNA_A - COLONNA_B
6 - 80
6 - 7
6 - -18
5 - 102
5 - 47
5 - -20
4 - 72
4 - 40
3 - 26
3 - -1
2 - 80
2 - 18
1 - -5
Vorrei invece ottenere questo risultato:
COLONNA_A - COLONNA_B
5 - 102
6 - 80
5 - 47
6 - 7
6 - -18
5 - -20
4 - 72
4 - 40
3 - 26
3 - -1
2 - 80
2 - 18
1 - -5

Ovvero:
- SE COLONNA_A > X ---> ordina per COLONNA_B in base a valori dal più grande al più piccolo
- SE COLONNA_A < X ---> ordina per COLONNA_A in base a valori dal più grande al più piccolo, quindi per COLONNA_B in base a valori dal più grande al più piccolo
by sal
00domenica 23 ottobre 2016 08:21
Ordinamento
Ciao Luigi, ma la "X" qual'è, dove la inserisci, quale "X"(Valore) hai usato per avere quell'ordinamento?

Ciao By Sal [SM=x423051]

luigivisini1980
00domenica 23 ottobre 2016 19:49
La X è un valore che decido personalmente al momento.
Per quell'ordinamento ho scelto il valore 5.
In pratica ho selezionato la tabella e fatto un ordinamento di questo tipo:
1) Ordina per COLONNA_A in base a valori dal più grande al più piccolo
2) Quindi per COLONNA_B in base a valori dal più grande al più piccolo
Poi, scegliendo il valore X = 5, ho selezionato la tabella dalla prima riga fino alla sesta riga (5 - -20) e ho impostato un ordine di tipo:
Ordina per COLONNA_B in base a valori dal più grande al più piccolo
dodo47
00lunedì 24 ottobre 2016 10:11
Ciao
...mha!!!...

Prova qualcosa del genere

saluti

Sub OrdinaSe()
    ur = Range("A" & Rows.Count).End(xlUp).Row
    With ActiveWorkbook.Worksheets("Foglio1").Sort
    .SortFields.Clear
    .SortFields.Add Key:=Range("A1:A" & ur) _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    .SortFields.Add Key:=Range("B1:B" & ur) _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    .SetRange Range("A1:B13")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
     For i = 1 To ur
        If Cells(i, 1) < Range("D1") Then
            .SortFields.Clear
            .SortFields.Add Key:=Range("B1:B" & i - 1) _
                 , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
            .SetRange Range("A1:B" & i - 1)
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
            Exit For
        End If
      Next i
    End With
End Sub
luigivisini1980
00martedì 25 ottobre 2016 15:58
Grazie, funziona perfettamente.
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 06:43.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com