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
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.