Vba: як класифікувати список значень


Ви можете використовувати такий базовий синтаксис, щоб упорядкувати список значень у Excel за допомогою 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

У цьому конкретному прикладі ранжуються значення в клітинках B2:B11 і відображаються ранги в клітинках C2:C11 .

Останній аргумент 0 визначає, що значення повинні бути ранжовані в порядку зростання (найбільше значення отримує ранг 1, друге за величиною значення отримує ранг 2 тощо).

Щоб упорядкувати значення в порядку спадання, просто замініть 0 на 1 .

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: як упорядкувати значення за допомогою 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

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

Рейтинг кожного значення в стовпці балів відображається в стовпці C.

Наприклад:

  • Гравець H з 41 балом має найвище значення балів, тому він отримує ранг 1 .
  • Гравець C із 40 очками має друге за величиною значення балів, тому він отримує ранг 2 .

І так далі.

Щоб ранжувати значення в стовпці балів у порядку спадання, ми можемо змінити останній аргумент методу Rank з 0 на 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

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

Рейтинг кожного значення в стовпці балів відображається в стовпці C.

Наприклад:

  • Гравець I з 11 очками має найнижче значення балів, тому він отримує ранг 1 .
  • Гравець E з 13 очками має друге найнижче значення балів, тому він отримує ранг 2 .

І так далі.

Примітка . Ви можете знайти повну документацію для методу VBA Rank тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання у VBA:

VBA: як підрахувати клітинки з певним текстом
VBA: як підрахувати кількість рядків у діапазоні
VBA: як написати функції COUNTIF і COUNTIFS

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *