Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Compara filas misma columna copia datos en base a criterios

Unas de las cosas básicas que siempre o casi siempre se necesita al realizar Macros de Excel, es recorrer las filas comparando datos, para luego copiar o cortar los datos, como así también eliminar las respectivas filas; este Código o Macro de VBA, aporta una pequeña ayuda mostrando como se puede comparar datos y en caso de coincidencia copiar y luego eliminar la fila donde se encontraba el dato o registro en la fila de Excel, cabe destacar que es motivo de muchas preguntas en foros sobre el tema.

En oportunidades anteriores se han agregado ejemplos que recorren filas en busca de datos los cuales se sugiere ver a los fines de complementar, como por ejemplo: como ordenar datos, determinar la última fila o columna con datosinsertar filasrecorrer filas mediante un bucle, estos son algunos de los ejemplos donde se puede observar como se utilizan los códigos de VBA o macros de Excel a los fines de obtener el resultado deseado, en  la categoría Macros VBA encontrarás muchos ejemplos que puedes adaptar a tu proyecto, un ejemplo reciente trata sobre ordenar los datos para luego trabajar con ellos.

Como es costumbre puedes descargar el ejemplo de la macro proporcionada, en forma gratuita, analizar su programación, adaptar a lo que requieras, para ellos debes descargarlo del link del final, sugiero que lo combines con algún otro ejemplo o ejemplos si necesitas adaptarlo a tu proyecto, el Código de VBA proporcionado aquí es libre.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Cuando abres el libro te encuentras con cuatro hojas una que se denomina, «OriginalOriginal», otra «Original», otra hoja que se llama «Coinciden» y por último una hoja que se titulo «No Coinciden»; la primer hoja se proporciona a los fines de poder observar varias veces como trabaja  la macro de Excel; ya que una vez corrida la macro y ordenados los datos, se pueden eliminar de las otras tres hojas y copiar los datos de la hoja «OriginalOriginal» en la hoja «Original» y volver a correr la macro cuantas vece querramos.

Al presionar el botón se ejecuta un procedimiento de VBA que en primer lugar solicita mediante un ImputBox, que se ingrese la columna a Evaluar, en este caso es la columna «E», pero se puede seleccionar cualquier columna si están los datos en es columna, si se selecciona otra columna la macro no funciona, ya que los datos a evaluar están en la columna E en este ejemplo, se debe observar que se solicita al usuario establezca donde se encuentran los datos a evaluar, lo que hace la macro versátil, ya que se pueden cambiar de columna y la macro de VBA seguiría funcionando sin problema, aparte que se muestra en forma muy escueta el funcionamiento de ImputBox, que en este caso el valor ingresado se lo asigna a una variable para determinar el rango donde buscar los datos a evaluar.

En el libro de Excel se evalúa el registro de la primer columna que coincida con el registro de la fila siguiente y así sucesivamente hasta que llegue al último registro, es decir se recorren y comparan filas de la misma columna en caso de encontrar una coincidencia, el ejemplo tiene como criterio que la diferencia entre las filas seleccionadas de la misma columna, debe dar igual a cero; en caso verdadero, copia los datos en la hoja «Coinciden» caso contrario copia los datos en la hoja con «No Coinciden», eliminando los datos de las filas respectivas en la hoja «Original», a través del comando Delete. Los datos copiados son todos de la fila, es decir la fila completa; en este caso para pasar los datos de una hoja a la otra no se usa el comando «copy» «paste»; se hace que la fila y columna de hoja adonde se copian los datos sea igual a la fila y columna de origen de datos, es una variante en vez de copiar y pegar, que es bueno saber usar cuando se programa macros de Excel mediante VBA.

Una explicación más detallada y gráfica de la macro presentada se muestra en el vídeo que se muestra seguidamente, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo Como cerrar libro dependiendo de fecha de caducidadbuscar en listbox mientras escribes en textboxComo conectar Excel con Word crear archivo e insertar textoComo crear un autonumerico en Excel y muchos ejemplos más.

Código que se insertar en un módulo

Sub comparafilas()
Dim fila, fila1, filaev, filade, conta, dato1, dato2, ncol As Integer
Dim col As String

MASTERCARD PAYONEER

fila = 2
fila1 = 3
filaev = 2
filade = 2
conta = 0
col = InputBox(Chr(10) & Chr(10) & «Introduzca columna a evaluar, ej A, B, C, etc.»)
col = col & «1»
ncol = Range(col).Column
While Sheets(«Original»).Cells(fila1, ncol) <> Empty
dato1 = Sheets(«Original»).Cells(fila, ncol).Value
    While Sheets(«Original»).Cells(fila1, ncol) <> Empty And conta = 0
      dato2 = Sheets(«Original»).Cells(fila1, ncol).Value
        If dato1 + dato2 = 0 Then
        Sheets(«Coinciden»).Cells(filaev, 1) = Sheets(«Original»).Cells(fila, 1)
        Sheets(«Coinciden»).Cells(filaev, 2) = Sheets(«Original»).Cells(fila, 2)
        Sheets(«Coinciden»).Cells(filaev, 3) = Sheets(«Original»).Cells(fila, 3)
        Sheets(«Coinciden»).Cells(filaev, 4) = Sheets(«Original»).Cells(fila, 4)
        Sheets(«Coinciden»).Cells(filaev, 5) = Sheets(«Original»).Cells(fila, 5)
        Sheets(«Coinciden»).Cells(filaev, 6) = Sheets(«Original»).Cells(fila, 6)
        Sheets(«Coinciden»).Cells(filaev, 7) = Sheets(«Original»).Cells(fila, 7)
        filaev = filaev + 1
        Sheets(«Coinciden»).Cells(filaev, 1) = Sheets(«Original»).Cells(fila1, 1)
        Sheets(«Coinciden»).Cells(filaev, 2) = Sheets(«Original»).Cells(fila1, 2)
        Sheets(«Coinciden»).Cells(filaev, 3) = Sheets(«Original»).Cells(fila1, 3)
        Sheets(«Coinciden»).Cells(filaev, 4) = Sheets(«Original»).Cells(fila1, 4)
        Sheets(«Coinciden»).Cells(filaev, 5) = Sheets(«Original»).Cells(fila1, 5)
        Sheets(«Coinciden»).Cells(filaev, 6) = Sheets(«Original»).Cells(fila1, 6)
        Sheets(«Coinciden»).Cells(filaev, 7) = Sheets(«Original»).Cells(fila1, 7)
        Sheets(«Original»).Cells(fila, ncol).EntireRow.Delete
        Sheets(«Original»).Cells(fila1 – 1, ncol).EntireRow.Delete
        conta = 1
        filaev = filaev + 1
        End If
     
    fila1 = fila1 + 1
    Wend
       If conta = 0 Then
            Sheets(«No Coinciden»).Cells(filade, 1) = Sheets(«Original»).Cells(fila, 1)
            Sheets(«No Coinciden»).Cells(filade, 2) = Sheets(«Original»).Cells(fila, 2)
            Sheets(«No Coinciden»).Cells(filade, 3) = Sheets(«Original»).Cells(fila, 3)
            Sheets(«No Coinciden»).Cells(filade, 4) = Sheets(«Original»).Cells(fila, 4)
            Sheets(«No Coinciden»).Cells(filade, 5) = Sheets(«Original»).Cells(fila, 5)
            Sheets(«No Coinciden»).Cells(filade, 6) = Sheets(«Original»).Cells(fila, 6)
            Sheets(«No Coinciden»).Cells(filade, 7) = Sheets(«Original»).Cells(fila, 7)
            Sheets(«Original»).Cells(fila, ncol).EntireRow.Delete
            filade = filade + 1
        End If
    conta = 0
    fila1 = 3
    Wend
 
End Sub

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends