Цей підручник навчить вас заповнювати масив унікальними значеннями зі стовпця у VBA.
Заповнення масиву з унікальними значеннями зі стовпця
Перенесення списку значень з аркуша Excel в масив - це питання перебору рядків у Excel та заповнення масиву.
Розглянемо наступний список клієнтів на аркуші Excel.
За допомогою циклу ми можемо заповнити масив у VBA. Однак стандартний цикл прокручуватиме кожен рядок, включаючи повторювані рядки, і ви отримаєте повторювані значення у своєму масиві.
Рішення прокрутити клітинки та заповнити об’єкт Collection значеннями як об’єкт колекції не дозволить дублювати. Потім ви можете використовувати цей об’єкт колекції для заповнення вашого масиву.
1234567891011121314151617181920212223242526 | Sub PopulateUniqueArray ()Dim StrCustomers () As StringDim Col як нова колекціяDim valCell As StringDim i як ціле числоDim n як ціле число'порахуйте рядки в діапазоніn = Діапазон ("A1", Діапазон ("A1"). Кінець (xlDown)). Rows.Count'Населення тимчасової колекціїУвімкнути Помилка Відновити ДаліДля i = 0 до nvalCell = Діапазон ("A1"). Зсув (i, 0). ЗначенняCol.Add valCell, valCellДалі iПомилка. ЯсноПомилка Перейти до 0'Змінити розмір nn = кол. кількість'Масив RedeclareReDim StrCustomers (від 1 до n)'Заповніть масив, перебираючи колекціюДля i = 1 Для підрахунку колонкиStrCustomers (i) = Col (i)Далі iНалагодження друку (StrCustomers (), vbCrLf)End Sub |
Заповнення масиву з унікальними значеннями - функція
У наведеному вище прикладі показано процедуру, яка виконуватиме бажані дії. Але замість цього ви можете віддати перевагу портативній функції для виконання завдання:
123456789101112131415161718192021222324 | Функція CreateUniqueList (nStart as Long, nEnd as long) як VariantDim Col як нова колекціяDim arrTemp() Як РядокDim valCell As StringDim i як ціле число'Населення тимчасової колекціїУвімкнути Помилка Відновити ДаліДля i = 0 до nEndvalCell = Діапазон ("A" & nStart) .Зміщення (i, 0). ЗначенняCol.Add valCell, valCellДалі iПомилка. ЯсноПомилка Перейти до 0'Змінити розмір nnEnd = Кол. кількість'Масив RedeclareReDim arrTemp(1 до кінця)'Заповніть тимчасовий масив шляхом перебору колекціїДля i = 1 Для підрахунку колонкиarrTemp(i) = Col (i)Далі i'повернути тимчасовий масив до результату функціїCreateUniqueList = arrTemp()Функція завершення |
Щоб скористатися функцією, вам потрібно буде викликати її з підпроцедури:
123456789 | Sub PopulateArray ()Dim StrCustomers () As StringDim strCol як колекціяDim n As Long'порахуйте рядки в діапазоніn = Діапазон ("A1", Діапазон ("A1"). Кінець (xlDown)). Rows.Count'запустіть функцію для створення масиву унікальних значеньstrCustomers () = CreateUniqueList (1, n)End Sub |