Macro para comparar datos en libros

Tengo dos libros de clientes el libro 1 y el libro 2, el cual me lo envían todos los meses, quiero una macro para que me resalte de color cuales de los clientes que tengo en el libro 2 no los tengo en el libro 1.

Los archivos están conformados por datos como identificación, apellidos, precios entre otros.

2 Respuestas

Respuesta
6

Sigue las Instrucciones para ejecutar la macro
1. Abre tu libro 2 de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Para ejecutarla presiona F5

Sub clientes_libro2_no_en_libro1()
'por.DAM
Set h1 = Workbooks("libro1").Sheets("Hoja1")
Set h2 = Workbooks("libro2").Sheets("Hoja1")
h2.Activate
Set r = h1.Range("A:A")
col = "A"
For i = 1 To h2.Range(col & Rows.Count).End(xlUp).Row
    Set b = r.Find(Cells(i, col))
    If b Is Nothing Then Cells(i, col).Interior.ColorIndex = 6
Next
End Sub

Indicaciones
1. Los dos libros deben estar abiertos
2. La macro la debes poner en el libro2
3. La hoja de los 2 libros le puse “hoja1”, puedes cambiar el nombre en esta parte de la macro:
Set h1 = Workbooks("libro1").Sheets("Hoja1")
Set h2 = Workbooks("libro2").Sheets("Hoja1")

Si tienes problemas en esta parte cambia el nombre así
Set h1 = Workbooks("libro1.xls").Sheets("Hoja1")
Set h2 = Workbooks("libro2.xls").Sheets("Hoja1")
Si tienes versión 2007 o mayor, así
Set h1 = Workbooks("libro1.xlsx").Sheets("Hoja1")
Set h2 = Workbooks("libro2.xlsm").Sheets("Hoja1")

4. La columna de clientes en el libro1, debe estar en la columna “A”, cámbiala en esta parte de la macro
Set r = h1.Range("A:A")
Por ejemplo, si está en la columna D, escribe así
Set r = h1.Range("D:D")
5. La columna de clientes en el libro 2, debe estar en la columna “A”, cámbiala en esta parte de la macro
col = "A"
Por ejemplo, si está en la columna D, escribe así
col = "D"
6. Te va a pintar de amarillo el cliente que no exista, cambia en la macro en esta parte, por el número de color de tu preferencia
If b Is Nothing Then Cells(i, col).Interior.ColorIndex = 6
busca el número de colores en esta página
http://dmcritchie.mvps.org/excel/colors.htm
Saludos. Dam
Si es lo que necesitas.

gracias...

y si los datos los tengo en 2 hojas del mismo libro como seria.

Cambia esta líneas

Set h1 = Workbooks("libro1").Sheets("Hoja1")
Set h2 = Workbooks("libro2").Sheets("Hoja1")

H2. Activate

Por estas

Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")

h2.select

Saludos. Dam

No he recibido comentarios., podrías finalizar la pregunta.

Respuesta
2

La solución es fácil:

Código VBA:

'invocar este metodo desde un boton
Sub CompararHojas()
' variable de tipo Range para hacer referencia a las celdas
    Dim obj_Cell As Range
    Set h1 = Sheets(1)
    Set h2 = Sheets(2)
    h2.Activate
    Dim fila As Integer
    Dim columna As Integer
    'Recorrer todas las celdas seleccionadas en el rango actual
    For Each obj_Cell In Selection.Cells
        With obj_Cell
            fila = .Row
            columna = .Column
        End With
        'marcar diferencias en hoja 1
        If (h1.Cells(fila, columna) <> h2.Cells(fila, columna)) Then
        'If (h1.Cells(fila, columna).Value <> h2.Cells(fila, columna).Value) Then
            'h1.Cells(fila, columna).Interior.ColorIndex = 6
            h1.Cells(fila, columna).Interior.Color = RGB(255, 0, 0)
        Else
            h1.Cells(fila, columna).Interior.Pattern = xlNone
        End If
        'marcar diferencias en hoja 2
        If (h1.Cells(fila, columna) <> h2.Cells(fila, columna)) Then
        'If (h1.Cells(fila, columna).Value <> h2.Cells(fila, columna).Value) Then
            'h2.Cells(fila, columna).Interior.ColorIndex = 6
            h2.Cells(fila, columna).Interior.Color = RGB(255, 0, 0)
        Else
            h2.Cells(fila, columna).Interior.Pattern = xlNone
        End If
    Next
End Sub

eso es todo favor indicanos si te sirvio la respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas