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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *