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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *