Vba: jak sklasyfikować listę wartości
Aby uporządkować listę wartości w Excelu za pomocą VBA, możesz zastosować następującą podstawową składnię:
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
Ten konkretny przykład szereguje wartości w komórkach B2:B11 i wyświetla rangi w komórkach C2:C11 .
Ostatni argument 0 określa, że wartości muszą być uszeregowane w kolejności rosnącej (największa wartość otrzymuje rangę 1, druga co do wielkości wartość otrzymuje rangę 2 itd.).
Aby uporządkować wartości w kolejności malejącej, po prostu zamień 0 na 1 .
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: Jak zamówić wartości za pomocą VBA
Załóżmy, że mamy następującą listę koszykarzy wraz ze zdobytymi przez nich punktami:
Załóżmy, że chcemy obliczyć rangę każdej wartości w kolumnie punktów.
W tym celu możemy utworzyć następujące makro:
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
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Ranking każdej wartości w kolumnie punktów jest wyświetlany w kolumnie C.
Na przykład:
- Gracz H z 41 punktami ma najwyższą wartość punktową, więc otrzymuje rangę 1 .
- Gracz C z 40 punktami ma drugą najwyższą wartość punktową, więc otrzymuje rangę 2 .
I tak dalej.
Aby uszeregować wartości w kolumnie punktów w kolejności malejącej, możemy zmienić ostatni argument metody Rank z 0 na 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
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Ranking każdej wartości w kolumnie punktów jest wyświetlany w kolumnie C.
Na przykład:
- Gracz I z 11 punktami ma najniższą wartość punktową, więc otrzymuje rangę 1 .
- Gracz E z 13 punktami ma drugą najniższą wartość punktową, więc otrzymuje rangę 2 .
I tak dalej.
Uwaga : Pełną dokumentację metody VBA Rank można znaleźć tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:
VBA: Jak liczyć komórki zawierające określony tekst
VBA: Jak policzyć liczbę wierszy w zakresie
VBA: Jak pisać funkcje COUNTIFS i COUNTIFS