Vba: come classificare un elenco di valori
È possibile utilizzare la seguente sintassi di base per ordinare un elenco di valori in Excel utilizzando VBA:
SubRankValues ()
Dim i As Integer
For i = 2 To 11
Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 0)
Next i
End Sub
Questo particolare esempio classifica i valori nelle celle B2:B11 e visualizza i ranghi nelle celle C2:C11 .
L’ultimo argomento 0 specifica che i valori devono essere classificati in ordine crescente (il valore più grande riceve il rango 1, il secondo valore più grande riceve il rango 2, ecc.).
Per ordinare i valori in ordine decrescente è sufficiente sostituire lo 0 con 1 .
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: come ordinare valori utilizzando VBA
Supponiamo di avere il seguente elenco di giocatori di basket insieme ai loro punti segnati:
Supponiamo di voler calcolare il rango di ciascun valore nella colonna dei punti.
Per fare ciò possiamo creare la seguente macro:
SubRankValues ()
Dim i As Integer
For i = 2 To 11
Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 0)
Next i
End Sub
Quando eseguiamo questa macro, riceviamo il seguente output:
La classifica di ciascun valore nella colonna dei punti viene visualizzata nella colonna C.
Per esempio:
- Il giocatore H con 41 punti ha il valore in punti più alto, quindi riceve il grado 1 .
- Il giocatore C con 40 punti ha il secondo valore in punti più alto, quindi riceve il grado 2 .
E così via.
Per classificare i valori nella colonna dei punti in ordine decrescente, possiamo modificare l’ultimo argomento del metodo Rank da 0 a 1 :
SubRankValues ()
Dim i As Integer
For i = 2 To 11
Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 1)
Next i
End Sub
Quando eseguiamo questa macro, riceviamo il seguente output:
La classifica di ciascun valore nella colonna dei punti viene visualizzata nella colonna C.
Per esempio:
- Il giocatore I con 11 punti ha il valore in punti più basso, quindi riceve il grado 1 .
- Il giocatore E con 13 punti ha il secondo valore in punti più basso, quindi riceve il grado 2 .
E così via.
Nota : puoi trovare la documentazione completa per il metodo VBA Rank qui .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:
VBA: come contare le celle con testo specifico
VBA: come contare il numero di righe nell’intervallo
VBA: come scrivere le funzioni COUNTIF e COUNTIFS