VBA – Rellenar Array con Valores Únicos de una Columna

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on diciembre 12, 2022

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

Rellenar un Array con Valores Únicos de una Columna

Tomar una lista de valores de una hoja de Excel en un Array es cuestión de hacer un bucle a través de las filas en Excel y rellenar el array.

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

Datos para Ejemplo Rellenar Array desde Columna en VBA

 

Usando un bucle, podríamos rellenar un Array en VBA. Sin embargo, un bucle estándar hará un bucle a través de cada fila, incluyendo filas duplicadas y terminará con valores duplicados en su matriz.

La solución es hacer un bucle a través de las celdas y rellenar un objeto Collection con los valores, ya que un objeto Collection no permite duplicados. A continuación, puede utilizar ese objeto de colección para rellenar su matriz.

Sub RellenarArrayValoresUnicos()
  Dim StrCustomers() As String
  Dim Col As New Collection
  Dim valCell As String
  Dim i As Integer
  Dim n As Integer
'contar las filas del intervalo
  n = Range("A1", Range("A1").End(xlDown)).Rows.Count
'Rellenar la colección temporal
  On Error Resume Next
  For i = 0 To n
    valCell = Range("A1").Offset(i, 0).Value
    Col.Add valCell, valCell
  Next i
  Err.Clear
  On Error GoTo 0
'Redimensionar n
  n = Col.Count
'Volver a declarar array
  ReDim StrCustomers(1 To n)
'Rellenar el array recorriendo la colección
  For i = 1 To Col.Count
    StrCustomers(i) = Col(i)
  Next i
  Debug.Print Join(StrCustomers(), vbCrLf)
End Sub

Función – Rellenar Array con Valores Únicos

El ejemplo anterior mostraba un procedimiento que realizaría las acciones deseadas. Pero en lugar de eso, usted podría preferir una Función portable para realizar la tarea:

Function CrearListaUnica(nStart As Long, nEnd As Long) As Variant
   Dim Col As New Collection
   Dim arrTemp() As String
   Dim valCell As String
   Dim i As Integer
'Rellenar la colección temporal
   On Error Resume Next
   For i = 0 To nEnd
      valCell = Range("A" & nStart).Offset(i, 0).Value
      Col.Add valCell, valCell
   Next i
   Err.Clear
   On Error GoTo 0
'Redimensionar n
   nEnd = Col.Count
'Volver a declarar array
   ReDim arrTemp(1 To nEnd)
'Rellenar el array temporal mediante un bucle a través de la colección
   For i = 1 To Col.Count
      arrTemp(i) = Col(i)
   Next i
'devolver el array temporal al resultado de la función
   CrearListaUnica = arrTemp()
End Function

Para usar la Función, necesitará llamarla desde un Sub Procedimiento:

Sub RellenarArray()
   Dim StrCustomers() As String
   Dim strCol As Collection
   Dim n As Long
'contar las filas del rango
   n = Range("A1", Range("A1").End(xlDown)).Rows.Count
'ejecutar la función para crear una matriz de valores únicos
   StrCustomers() = CrearListaUnica(1, n)
End Sub
vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples