VBA - удалить дубликаты из массива

Содержание

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

Удалить дубликаты

Самый простой способ удалить дубликаты из массива VBA - присвоить значения массива коллекции VBA, а затем передать значения обратно в массив. Коллекции не допускают повторяющихся значений, и, таким образом, используя Коллекцию, мы можем удалить дубликаты из массива. Мы создали функцию для выполнения этой задачи:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Функция ArrayRemoveDups (MyArray как вариант) как вариантDim nFirst as long, nLast as long, i as longУменьшить размер элемента в виде строкиDim arrTemp () как строкаDim Coll как новая коллекция'Получить первую и последнюю позиции массиваnFirst = LBound (MyArray)nLast = UBound (MyArray)ReDim arrTemp (nFirst To nLast)'Преобразовать массив в строкуДля i = nFirst To nLastarrTemp (i) = CStr (MyArray (i))Далее я'Заполнить временную коллекциюПри ошибке Возобновить ДалееДля i = nFirst To nLastColl.Add arrTemp (i), arrTemp (i)Далее яErr.ClearПри ошибке GoTo 0'Изменить размер массиваnLast = Coll.Count + nFirst - 1ReDim arrTemp (nFirst To nLast)'Заполнить массивДля i = nFirst To nLastarrTemp (i) = Coll (i - nFirst + 1)Далее я'Выходной массивArrayRemoveDups = arrTempКонечная функцияSub ArrTest ()Dim strNames (от 1 до 4) как строкаУменьшить outputArray () как строкуТусклый я до тех пор, покаТусклый элемент как вариант'Установить начальные значения массиваstrNames (1) = "Шелли"strNames (2) = "Стив"strNames (3) = "Нима"strNames (4) = "Стив"'Функция дублирования вызоваoutputArray = ArrayRemoveDups (имена строк)'Выводить значения в немедленное окно (CTRL + G)Для каждого элемента в outputArrayDebug.Print itemСледующий элементКонец подписки

Примечание. В этом примере мы заставили наш массив начинаться с 1 (а не с 0). Если ваш массив начинается с 0, вам нужно будет немного изменить код.

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

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

wave wave wave wave wave