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.»
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.
Muchas gracias, el código me ayudó bastante. Además del comentarizado que no deja lugar a ninguna duda.
De diez.
Saludos.
Muchas gracias por seguir el Blog 😉