VBA: rellene la matriz con valores únicos de la columna

Este tutorial le enseñará cómo completar una matriz con valores únicos de una columna en VBA.

Llene la matriz con valores únicos de la columna

Llevar una lista de valores de una hoja de Excel a una matriz es una cuestión de recorrer las filas en Excel y completar la matriz.

Considere la siguiente lista de clientes en una hoja de Excel.

Usando un bucle, podríamos poblar una matriz en VBA. Sin embargo, un bucle estándar recorrerá cada fila, incluidas las filas duplicadas, y terminará con valores duplicados en su matriz.

La solución para recorrer las celdas y completar un objeto Colección con los valores como un objeto de colección no permitirá duplicados. Luego puede usar ese objeto de colección para completar su matriz.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray ()Dim StrCustomers () como cadenaDim Col como nueva colecciónDim valCell como cadenaDim i como enteroDim n como entero'cuenta las filas en el rangon = Rango ("A1", Rango ("A1"). Fin (xlDown)). Rows.Count'Rellenar colección temporalEn caso de error, reanudar siguientePara i = 0 A nvalCell = Rango ("A1"). Desplazamiento (i, 0) .ValorCol.Añadir valCell, valCellSiguiente yoErr.ClearEn caso de error, vaya a 0'Cambiar el tamaño nn = Cuenta Col'Reclamar matrizReDim StrCustomers (1 an)'Rellenar Array recorriendo la colecciónPara i = 1 al recuento col.StrCustomers (i) = Col (i)Siguiente yoDebug.Print Join (StrCustomers (), vbCrLf)End Sub

Rellenar matriz con valores únicos - Función

El ejemplo anterior mostró un procedimiento que realizaría las acciones deseadas. Pero en su lugar, es posible que prefiera una función portátil para realizar la tarea:

123456789101112131415161718192021222324 Función CreateUniqueList (nStart as Long, nEnd as long) como VariantDim Col como nueva colecciónOscuro arrTemp() Como CuerdaDim valCell como cadenaDim i como entero'Rellenar colección temporalEn caso de error, reanudar siguientePara i = 0 para nEndvalCell = Rango ("A" & nStart) .Offset (i, 0) .ValueCol.Añadir valCell, valCellSiguiente yoErr.ClearEn caso de error, vaya a 0'Cambiar el tamaño nnEnd = Cuenta Col'Reclamar matrizReDim arrTemp(1 para terminar)'Llene la matriz temporal recorriendo la colecciónPara i = 1 al recuento col.arrTemp(i) = Col (i)Siguiente yo'devuelve la matriz temporal al resultado de la funciónCreateUniqueList = arrTemp()Función final

Para usar la función, deberá llamarla desde un subprocedimiento:

123456789 Sub PopulateArray ()Dim StrCustomers () como cadenaDim strCol as CollectionDim n tan largo'cuenta las filas en el rangon = Rango ("A1", Rango ("A1"). Fin (xlDown)). Rows.Count'ejecuta la función para crear una matriz de valores únicosstrCustomers () = CreateUniqueList (1, n)End Sub
wave wave wave wave wave