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