Vba: een lijst met waarden classificeren
U kunt de volgende basissyntaxis gebruiken om een lijst met waarden in Excel te ordenen met behulp van 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
In dit specifieke voorbeeld worden de waarden in de cellen B2:B11 gerangschikt en worden de waarden in de cellen C2:C11 weergegeven.
Het laatste argument van 0 geeft aan dat de waarden in oplopende volgorde moeten worden gerangschikt (de grootste waarde krijgt een rangorde van 1, de op één na grootste waarde krijgt een rangorde van 2, enz.).
Om de waarden in aflopende volgorde te ordenen, vervangt u eenvoudigweg de 0 door 1 .
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: waarden bestellen met VBA
Stel dat we de volgende lijst met basketbalspelers hebben, samen met hun gescoorde punten:
Stel dat we de rangorde van elke waarde in de puntenkolom willen berekenen.
We kunnen hiervoor de volgende macro maken:
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
Wanneer we deze macro uitvoeren, ontvangen we de volgende uitvoer:
De rangschikking van elke waarde in de puntenkolom wordt weergegeven in kolom C.
Bijvoorbeeld:
- Speler H heeft met 41 punten de hoogste puntenwaarde en krijgt dus rang 1 .
- Speler C met 40 punten heeft de op één na hoogste puntenwaarde en krijgt dus rang 2 .
Enzovoort.
Om de waarden in de puntenkolom in aflopende volgorde te rangschikken, kunnen we het laatste argument van de Rank- methode wijzigen van 0 in 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
Wanneer we deze macro uitvoeren, ontvangen we de volgende uitvoer:
De rangschikking van elke waarde in de puntenkolom wordt weergegeven in kolom C.
Bijvoorbeeld:
- Speler I met 11 punten heeft de laagste puntenwaarde en krijgt dus rang 1 .
- Speler E met 13 punten heeft de op één na laagste puntenwaarde en krijgt dus rang 2 .
Enzovoort.
Opmerking : u kunt hier de volledige documentatie voor de VBA Rank- methode vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in VBA kunt uitvoeren:
VBA: cellen tellen met specifieke tekst
VBA: het aantal rijen binnen bereik tellen
VBA: Hoe COUNTIF- en COUNTIFS-functies te schrijven