Compare 2 columnas a través de VBA en Microsoft Excel

Anonim

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 columna en la siguiente columna, es decir, las columnas C & D respectivamente. En este ejemplo, estoy tomando solo 40 filas de datos de muestra.

Puedes encontrar la pregunta original aquí.
A continuación se muestra la instantánea de los datos:

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 de código, seleccione Visual Basic

  • Copie el siguiente código en el módulo estándar
 Sub PullUniques () Dim rngCell como rango para cada rngCell en el rango ("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 Entonces Range ("D" & Rows.Count) .End (xlUp) .Offset (1) = rngCell End If Next End Sub 

  • 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 método abreviado “ALT + F8”, seleccione su macro y haga clic en el botón Ejecutar

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

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 As Range 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 el rango ("A2: A40"); comprobaremos cada celda en "rngCell" con una condición
  • Si WorksheetFunction.CountIf (Range ("B2: B40"), rngCell) = 0 Entonces; 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, se guardará el valor almacenado en rngCell
  • De manera similar, ejecutaremos For Each Loop para la columna B y extraeremos 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.

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íbenos a sitio de correo electrónico