En caso de que se esté preguntando cómo comparar 2 columnas de datos que tienen filas en millones y extraer los valores únicos entre ambas columnas, debería leer este artículo. Usaremos el código VBA para comparar dos columnas de datos y mostrar la diferencia en las siguientes dos columnas .

Pregunta: Hay varios valores que existen en las columnas A y B. Quiero que una macro verifique más de 40 k filas de datos en ambas columnas y luego extraiga la lista de entradas únicas de cada una de las columnas en la siguiente columna, es decir columnas C y D respectivamente. En este ejemplo, estoy tomando solo 40 filas de datos de muestra.

A continuación se muestra la instantánea de los datos:

img1

===

Para comparar la lista de dos columnas, debemos seguir los pasos a continuación para iniciar el editor de VB:

Haga clic en la pestaña Desarrollador. Desde el grupo Código, seleccione Visual Basic

img2

  • Copie el siguiente código en el módulo estándar

Sub PullUniques()

Dim rngCell As Range

For Each rngCell In Range("A2:A40")

If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) = 0 Then

Range("C" & Rows.Count).End(xlUp).Offset(1) = rngCell

End If

Next

For Each rngCell In Range("B2:B40")

If WorksheetFunction.CountIf(Range("A2:A40"), rngCell) = 0 Then

Range("D" & Rows.Count).End(xlUp).Offset(1) = rngCell

End If

Next

End Sub

img3

  • La macro anterior está lista para ejecutarse; o podemos presionar la tecla F5 –si se encuentra actualmente en la pantalla del editor de Visual Basic –o podemos usar las teclas de acceso directo “ALT + F8”, seleccione su macro y haga clic en el botón Ejecutar

img4

  • La lista única de las columnas A y B se generará automáticamente en las columnas C y D

img5

Explicación del código:

En el código anterior, usaremos la función IF junto con el bucle For para obtener el resultado.

Declaramos Dim rngCell As Range; el propósito de declarar rngCell como rango es que queremos asignar el rango de muestra “A2: A40” con un nombre específico, es decir, “rngCell” en nuestro ejemplo para cada rngCell en rango («A2: A40»); comprobaremos cada celda en “rngCell” con una condición If WorksheetFunction.CountIf (Range («B2: B40»), rngCell) = 0 Then; esta línea de código está usando la función COUNTIF VBA para verificar el rango de criterios B2: B40 con los criterios rngCell es igual a cero, luego en la columna C, el valor almacenado en rngCell se guardará de manera similar, ejecutaremos For Each Loop para la columna B & extract los valores únicos en la columna D Conclusión: Podemos obtener la lista única de texto o valores de cada una de las columnas; el nombre del encabezado de la columna C (Resultados: existe en la Lista 1 pero no en la Lista 2) y la columna D (Resultados: existe en la Lista 2 pero no en la Lista 1). En caso de que tengamos un requisito similar pero el número de columnas sea más de dos, entonces necesitamos modificar el código para obtener el resultado.

image 29

Si te gustaron nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar, complementar o innovar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]