Как посчитать уникальные значения в диапазоне с помощью vba
Вы можете использовать следующий базовый синтаксис для подсчета количества уникальных значений в диапазоне с помощью VBA:
SubCountUnique ()
Dim Rng As Range, List As Object, UniqueCount As Long
Set List = CreateObject(" Scripting.Dictionary ")
'count unique values in range A2:A11
For Each Rng In Range(" A2:A11 ")
If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
Next
'store unique count
UniqueCount = List.Count
' display unique count
MsgBox " Count of Unique Values: " & UniqueCount
End Sub
В этом конкретном примере подсчитывается количество уникальных значений в диапазоне A2:A11 , а затем отображается количество в окне сообщения.
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: подсчет уникальных значений в диапазоне с помощью VBA
Предположим, у нас есть следующий список названий баскетбольных команд в Excel:
Предположим, мы хотим подсчитать количество уникальных названий команд в диапазоне A2:A11 .
Для этого мы можем создать следующий макрос:
SubCountUnique()
Dim Rng As Range, List As Object, UniqueCount As Long
Set List = CreateObject(" Scripting.Dictionary ")
'count unique values in range A2:A11
For Each Rng In Range(" A2:A11 ")
If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
Next
'store unique count
UniqueCount = List.Count
'display unique count
MsgBox " Count of Unique Values: " & UniqueCount
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
В окне сообщения сообщается, что существует 5 уникальных названий команд.
Мы можем убедиться, что это правильно, вручную определив каждое из уникальных названий команд:
- Мавс
- Нагревать
- Сети
- Воины
- короли
На самом деле существует 5 уникальных названий команд.
Примечание . Чтобы подсчитать количество уникальных значений в другом диапазоне, просто замените A2:A11 в цикле For Each на другой диапазон.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как подсчитать ячейки с определенным текстом
VBA: как подсчитать количество строк в диапазоне
VBA: как писать функции COUNTIF и COUNTIFS