VBA - Preencher matriz com valores exclusivos da coluna

Este tutorial ensinará como preencher uma matriz com valores exclusivos de uma coluna no VBA.

Preencher matriz com valores exclusivos da coluna

Colocar uma lista de valores de uma planilha do Excel em um Array é uma questão de percorrer as linhas do Excel e preencher o array.

Considere a seguinte lista de clientes em uma planilha do Excel.

Usando um loop, poderíamos popular um Array em VBA. No entanto, um loop padrão percorrerá cada linha, incluindo linhas duplicadas e você terminará com valores duplicados em seu Array.

A solução para percorrer as células e preencher um objeto de coleção com os valores como um objeto de coleção não permitirá duplicatas. Você pode então usar esse objeto de coleção para preencher sua matriz.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray ()Dim StrCustomers () As StringDim Col como nova coleçãoDim valCell As StringDim i As IntegerDim n As Integer'contar as linhas no intervalon = Intervalo ("A1", Intervalo ("A1"). Fim (xlDown)). Linhas.Contagem'Preencher coleção temporáriaOn Error Resume NextPara i = 0 para nvalCell = Range ("A1"). Offset (i, 0) .ValueCol.Add valCell, valCellProximo euErr.ClearNo erro GoTo 0'Resize nn = Col.Count'Redeclare arrayReDim StrCustomers (1 para n)'Preencher Array percorrendo a coleçãoPara i = 1 para Col.CountStrCustomers (i) = Col (i)Proximo euDebug.Print Join (StrCustomers (), vbCrLf)End Sub

Preencher matriz com valores exclusivos - função

O exemplo acima mostrou um procedimento que executaria as ações desejadas. Mas, em vez disso, você pode preferir uma função portátil para realizar a tarefa:

123456789101112131415161718192021222324 Função CreateUniqueList (nStart as Long, nEnd enquanto) as VariantDim Col como nova coleçãoDim arrTemp() Como FragmentoDim valCell As StringDim i As Integer'Preencher coleção temporáriaOn Error Resume NextPara i = 0 para nEndvalCell = Range ("A" & nStart) .Offset (i, 0) .ValueCol.Add valCell, valCellProximo euErr.ClearNo erro GoTo 0'Resize nnEnd = Col.Count'Redeclare arrayReDim arrTemp(1 ao final)'Preencher a matriz temporária percorrendo a coleçãoPara i = 1 para Col.CountarrTemp(i) = Col (i)Proximo eu'retorna o array temporário para o resultado da funçãoCreateUniqueList = arrTemp()Função Final

Para usar a função, você precisará chamá-la de um subprocedimento:

123456789 Sub PopulateArray ()Dim StrCustomers () As StringDim strCol como coleçãoDim n As Long'contar as linhas no intervalon = Intervalo ("A1", Intervalo ("A1"). Fim (xlDown)). Linhas.Contagem'executa a função para criar uma matriz de valores únicosstrCustomers () = CreateUniqueList (1, n)End Sub

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave