У вас уже есть решение на основе формул, и это может быть то, что вы хотите использовать в этом случае.
Если вам интересно, как решить проблему с помощью VBA, читайте дальше.
Для задачи идентификации уникальных значений словарь может быть подходящей структурой данных.
В частности, вы можете проверить наличие ключа перед добавлением ключа.
Протестированный пример выглядит следующим образом:
(Обратите внимание: необходимо включить (установить флажок) Инструменты> Ссылки> «Microsoft Scripting Runtime».)
Option Explicit
Function uniq_dict(ByRef row As Long, ByRef col As Long)
Dim dict As New Scripting.Dictionary
Dim ws As Worksheet
Set ws = ActiveWorkbook.Sheets("Sheet1")
For row = 1 To ws.Cells(Rows.Count, col).End(xlUp).row
If Not dict.Exists(ws.Cells(row, col).Value) Then
dict.Add ws.Cells(row, col).Value, Null '# can insert something here
End If
Next row
Set uniq_dict = dict
End Function
Sub call_uniq_dict()
Dim i As Integer
Dim k() As Variant
Dim dict As New Scripting.Dictionary
Set dict = uniq_dict(1, 1)
Debug.Print "total items in dict:", dict.Count
k = dict.Keys
For i = 0 To dict.Count - 1
Debug.Print " dict key:", k(i)
Next
End Sub
Результат:
total items in dict: 5
dict key: 1
dict key: 2
dict key: 3
dict key: 7
dict key: 8