Comparar listados

En este ejemplo  nos encontramos que tenemos un listado con códigos en la columna A Código ,  en la columna B Código Total tenemos los mismos códigos y algunos nuevos que se han ido añadiendo.

Necesitamos una macro que revise cada código de la columna B y compruebe si está en la columna A, si no está consideramos que es un nuevo código y debemos añadirlo a un listado con los Códigos Nuevos en la columna D

“Suponemos que siempre estarán los códigos antiguos más algunos nuevos.”

compararlistados

El  código mostrado en este ejemplo es una buena forma de entender cómo funciona la instrución For … Next en VBA, y cómo podemos añadir  un Loop para recorrer celdas de una lista.

El bucle For…Next cogerá cada uno de los códigos de  a columna B y a través del bucle Do While … Loop los comparará con todos los códigos de la columna A, si hay alguno igual sale del loop, y si no hay ninguno igual, con If … Enf If conseguiremos que vaya añadiendo los códigos  nuevos a la columna D.

Option Explicit
Sub compararlistados()

'definimos variales
Dim VlastfilA As Integer 'última fila columna A
Dim VlastfilB As Integer 'última fila columna B
Dim VcodA As String 'códigos columna A
Dim VcodB As String 'códigos columna B
Dim Vclav As Integer 'clave 0 igual 1 diferente
Dim i As Integer 'bucle For I
Dim j As Integer 'bucle Do While
Dim k As Integer 'ccontador para pegar resultados

    Range("A1048576").Select
    Selection.End(xlUp).Select
    VlastfilA = ActiveCell.Row 'averiguamos la última fila de columna A
    
    Range("B1048576").Select
    Selection.End(xlUp).Select
    VlastfilB = ActiveCell.Row 'averiguamos la última fila de columna B
    
        k = 2 ' iniciamos esta variable para pegar los resultados desde la fila 2 en la columna D
    
        For i = 2 To VlastfilB  'bucle recorriendo las filas de la columna B
            
            VcodB = Cells(i, 2).Value 'almacenamos cada uno de los códigos de la columna B para compararlos con todos
            'los de la columna A
                j = 2 ' iniciamos la variable para el bucle desde la fila 2 de la columna A
            
                Do While j <= VlastfilA 'hacer el bucle tantas veces como datos haya en la columna A
                
                   VcodA = Cells(j, 1).Value 'almacenamos en la variable cada código de la columna A
                   
                    If VcodB = VcodA Then 'comparamos cada valor de la columna B con todos los de la A
                        Vclav = 1 ' le damos un valor 1 si encuentra uno igual
                        Exit Do ' Si es = 1 salir del Loop
                    Else
                        Vclav = 0 'si no encuentra uno igual le damos un valor 1
                    End If
                              
                    j = j + 1 ' contador para el Loop
                                     
                Loop
        
            If Vclav = 0 Then 'si el valor de Vclav es igual a 0 entonces mostraremos los códigos nuevos
                
                MsgBox "Código nuevo: " & VcodB
                
                Cells(k, 4).Value = VcodB ' lo pegamos en la celda D2, k está iniciado en 2
                k = k + 1 ' contador dentro de If que irá sumando de uno en uno desde 2
            End If
               
        Next i
   
End Sub

Puedes descargar este ejemplo en el siguiente enlace.

Comparar listados.xlsm

Anuncios

Un comentario en “Comparar listados

  1. Pingback: Última fecha para cada cliente « Excel Trucos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s