VBA - заполнить массив уникальными значениями из столбца

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

Заполнить массив уникальными значениями из столбца

Взятие списка значений из листа Excel в массив - это процесс перебора строк в Excel и заполнения массива.

Рассмотрим следующий список клиентов в таблице Excel.

Используя цикл, мы можем заполнить массив в VBA. Однако стандартный цикл будет проходить через каждую строку, включая повторяющиеся строки, и вы получите повторяющиеся значения в вашем массиве.

Решение для перебора ячеек и заполнения объекта Collection значениями в качестве объекта коллекции не допускает дублирования. Затем вы можете использовать этот объект коллекции для заполнения вашего массива.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray ()Dim StrCustomers () как строкаDim Col как новая коллекцияDim valCell как строкаDim i как целое числоDim n как целое число'подсчитываем строки в диапазонеn = Диапазон ("A1", Диапазон ("A1"). Конец (xlDown)). Rows.Count'Заполнить временную коллекциюПри ошибке Возобновить ДалееДля i = 0 К nvalCell = Range ("A1"). Offset (i, 0) .ValueCol.Add valCell, valCellДалее яErr.ClearПри ошибке GoTo 0'Изменить размер nn = Col.Count'Переобъявить массивReDim StrКлиенты (от 1 до n)'Заполнить массив, перебирая коллекциюДля i = 1 To Col.CountStrCustomers (i) = Col (i)Далее яDebug.Print Join (StrCustomers (), vbCrLf)Конец подписки

Заполнить массив с уникальными значениями - функция

В приведенном выше примере показана процедура, которая выполнит желаемые вами действия. Но вместо этого вы можете предпочесть переносимую функцию для выполнения задачи:

123456789101112131415161718192021222324 Функция CreateUniqueList (nStart as Long, nEnd as long) как вариантDim Col как новая коллекцияТусклый arrTemp() В качестве НитьDim valCell как строкаDim i как целое число'Заполнить временную коллекциюПри ошибке Возобновить ДалееДля i = 0 до nEndvalCell = Range ("A" & nStart) .Offset (i, 0) .ValueCol.Add valCell, valCellДалее яErr.ClearПри ошибке GoTo 0'Изменить размер nnEnd = Col.Count'Переобъявить массивReDim arrTemp(От 1 до конца)'Заполнить временный массив, перебирая коллекциюДля i = 1 To Col.CountarrTemp(i) = Col (i)Далее я'возвращаем временный массив в результат функцииCreateUniqueList = arrTemp()Конечная функция

Чтобы использовать функцию, вам нужно вызвать ее из подпроцедуры:

123456789 Sub PopulateArray ()Dim StrCustomers () как строкаDim strCol как КоллекцияDim n As Long'подсчитываем строки в диапазонеn = Диапазон ("A1", Диапазон ("A1"). Конец (xlDown)). Rows.Count'запускаем функцию, чтобы создать массив уникальных значенийstrCustomers () = CreateUniqueList (1, n)Конец подписки

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave