Macro para comparar datos de 2 libros de excel

Tengo una base la cual se alimenta con varios Excel... Llamemos les id (el num puede ser variable) yo tengo que comparar una columna de la base con una del id"el num es variable" y el dato de la casilla "a1" del id colocarlo en la columna "ah" de la fila en la que coincidan los datos que compare... ¿me podrían ayudar con una macro?

Respuesta

La solución es fácil:

1. Abre un libro de excel habilitado para macros y guardalo en escritorio

2. Copia en la hoja1 y hoja2 los datos a comparar

3. Crea el siguiente método VBA (ver abajo)

4. Crea un botón en la hoja2, e invoca al anterior método

5. Ejecutar:selecciona con el mouse el rango de datos a comparar en la hoja2, y dale click en el botón creado

6. La macro se ejecuta y veras los datos diferentes en cada hoja, con el fondo de la celda en color rojo

Código VBA:

Sub comparar_hojas()
' 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