У меня есть функция VBA, которая проходит через несколько пользовательских диапазонов на основе пользовательских условий и добавляет элементы в массив. Для его разработанных вариантов использования это почти наверняка добавит дубликаты. В конце меня интересует только количество уникальных элементов в массиве, который я построил.

Я пытаюсь вызвать эту функцию:

Function GetUniqueCount(aFirstArray As Variant)

Dim arr As New Collection, a
Dim i As Long

On Error Resume Next

For Each a In aFirstArray
    arr.Add a, Str(a)
Next

GetUniqueCount = arr.Count

End Function

Вот так:

Function Stuff(parameters)

Dim myArray() as Variant

...do things to populate myArray, finally

Stuff = GetUniqueCount(myArray)

Функция GetUniqueCount представляет собой слегка измененную настройку принятого здесь ответа на аналогичный вопрос.

Когда я делаю это, Stuff всегда возвращает 1, даже когда кажется очевидным, что это не должно. До этого момента я проверял Stuff, и он точно выдает количество ожидаемых элементов, я просто делаю что-то не так, когда пытаюсь подсчитать количество уникальных элементов. Любая помощь будет принята с благодарностью, так как я все еще изучаю массивы VBA.

1 ответ1

1

Я сделал несколько небольших изменений в UDF().............. Изучите различия:

Function GetUniqueCount(aFirstArray()) As Long
    Dim arr As Collection
    Set arr = New Collection

    On Error Resume Next
        For Each a In aFirstArray
            arr.Add a, CStr(a)
        Next
    On Error GoTo 0
    GetUniqueCount = arr.Count
End Function

Sub MAIN()
    Dim inpt()
    inpt = Array("alpha", "alpha", "beta", "beta", "gamma")
    MsgBox GetUniqueCount(inpt)
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .