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 .
  • Игрок Е с 13 очками имеет второе наименьшее значение очков, поэтому он получает ранг 2 .

И так далее.

Примечание . Полную документацию по методу VBA Rank можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *