VBA - Популационен масив с уникални стойности от колона

Този урок ще ви научи как да попълвате масив с уникални стойности от колона във VBA.

Попълнете масив с уникални стойности от колона

Взимането на списък със стойности от лист на Excel в масив е въпрос на цикъл през редовете в Excel и попълване на масива.

Помислете за следния списък с клиенти в лист на Excel.

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

Решението за преминаване през клетките и попълване на обект на колекция със стойностите като обект на колекция няма да позволи дублирания. След това можете да използвате този обект за събиране, за да попълните вашия масив.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray ()Dim StrCustomers () As StringDim Col като нова колекцияDim valCell As StringDim i As IntegerDim n като цяло число'пребройте редовете в диапазонаn = Диапазон ("A1", Обхват ("A1"). Край (xlDown)). Rows.Count„Населете временна колекцияНа грешка възобновяване следващоЗа i = 0 To nvalCell = Обхват ("A1"). Отместване (i, 0)Col.Add valCell, valCellСледва iErr.ClearПри грешка GoTo 0'Преоразмеряване nn = Col.Count„Редекларирайте масиваReDim StrCustomers (1 To n)'Попълнете масива, като преминете през колекциятаЗа i = 1 За Col.CountStrCustomers (i) = Col (i)Следва iDebug.Print Join (StrCustomers (), vbCrLf)End Sub

Попълнете масив с уникални стойности - функция

Горният пример показва процедура, която ще извърши желаните от вас действия. Но вместо това може да предпочетете преносима функция за изпълнение на задачата:

123456789101112131415161718192021222324 Функция CreateUniqueList (nStart като Long, nEnd толкова дълго) като VariantDim Col като нова колекцияДим arrTemp() Като НизDim valCell As StringDim i As Integer„Населете временна колекцияНа грешка възобновяване следващоЗа i = 0 До nEndvalCell = Диапазон ("A" & nStart). Офсет (i, 0).Col.Add valCell, valCellСледва iErr.ClearПри грешка GoTo 0'Преоразмеряване nnEnd = Col.Count„Редекларирайте масиваReDim arrTemp(1 до nEnd)'Попълнете временен масив, като преминете през колекциятаЗа i = 1 За Col.CountarrTemp(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
wave wave wave wave wave