VBA - Eliminar duplicados de la matriz

Tabla de contenido

Este tutorial le enseñará cómo eliminar duplicados de una matriz en VBA.

Eliminar duplicados

La forma más fácil de eliminar duplicados de una matriz VBA es asignar los valores de la matriz a una colección VBA y luego pasar los valores a una matriz. Las colecciones no permiten valores duplicados y, por lo tanto, al usar una colección, podemos eliminar los duplicados de una matriz. Creamos una función para realizar esta tarea:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Función ArrayRemoveDups (MyArray como variante) como varianteDim n Primero tanto tiempo, n Último tanto tiempo, i Tanto tiempoAtenuar elemento como cadenaDim arrTemp () como cadenaDim Coll como nueva colección'Obtener la primera y la última posición de matriznFirst = LBound (MyArray)nLast = UBound (MyArray)ReDim arrTemp (nFirst to nLast)'Convertir matriz en cadenaPara i = n Primero a nÚltimoarrTemp (i) = CStr (MyArray (i))Siguiente yo'Rellenar colección temporalEn caso de error, reanudar siguientePara i = nPrimero a nÚltimoColl.Añadir arrTemp (i), arrTemp (i)Siguiente yoErr.ClearEn caso de error, vaya a 0'Cambiar el tamaño de la matriznÚltimo = Cuenta col. + nPrimero - 1ReDim arrTemp (nFirst to nLast)'Rellenar matrizPara i = nPrimero a nÚltimoarrTemp (i) = Coll (i - nFirst + 1)Siguiente yo'Matriz de salidaArrayRemoveDups = arrTempFunción finalSub ArrTest ()Dim strNames (1 To 4) As StringDim outputArray () como cadenaDim i tan largoAtenuar elemento como variante'Establecer valores de matriz inicialstrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Steve"'Llamar a la función DupoutputArray = ArrayRemoveDups (strNames)'Salida de valores a la ventana inmediata (CTRL + G)Para cada elemento de outputArrayDebug.Print elementoProximo articuloEnd Sub

Nota: En el ejemplo, forzamos a nuestro Array a comenzar en 1 (no 0). Si su matriz comienza en 0, deberá modificar ligeramente el código.

Observe que convertimos el contenido de la matriz en una cadena. Si es necesario, puede volver a convertir las cadenas en números enteros después de que se complete el proceso.

wave wave wave wave wave