Cómo puedo comparar 2 libros de Excel que contienen las mismas hojas, para encontrar variación en datos y fórmulas

Tengo dos archivos en Excel libro1 y libro2, necesito comparar sólo hoja1, y encontrar diferencias entre los datos y las fórmulas de cada libro es decir  si a1=5 en libro1 y en libro2 a1=10 me debe marcar (en libro1) que no coincide, si en libro1 en b1=a1+c1 y en libro2 tuviera b1=a1*2 que me mostrara que hay diferencia en la fórmula.

1 respuesta

Respuesta
2

Te anexo la siguiente macro, sigue las siguientes indicaciones para que funcione la macro:

- Deberás tener tus 2 libros abiertos.

- En la macro cambia "libroA" y "libroB" por los nombres de tus libros.

- Cambia en la macro "hoja1" por el nombre de la hoja a comparar.

- Guarda la macro en tu "libroA"

- Crea una hoja en tu "libroA" puedes ponerle el nombre que quieras.

- Cambia en la macro "hoja3" por el nombre de la nueva hoja que creaste.

Ejecuta la macro y te pondrá en la "hoja3" el resultado, cuando haya una diferencia entre el "libroA" y el "libroB" te pondrá un mensaje en la "hoja3" en la misma celda en donde haya una diferencia y te pondrá el dato o la fórmula del "libroA".

Sub comparar()
'Por.DAM
Set h1 = Workbooks("libroA").Sheets("Hoja1")
Set h2 = Workbooks("libroB").Sheets("Hoja1")
Set h3 = Workbooks("libroA").Sheets("Hoja3")
h3.Cells.Clear
For Each c In h1.UsedRange
    If c.HasArray Then
        a1 = c.Formula
        d = c.Address
        a2 = h2.Range(d).Formula
        If a1 <> a2 Then
            h3.Range(d) = "formula diferente: " & a1
        Else
            If c.Value <> h2.Range(d).Value Then
                h3.Range(d) = "resultado de fórmula diferente: " & c
            End If
        End If
    ElseIf c.HasFormula Then
        a1 = c.Formula
        d = c.Address
        a2 = h2.Range(d).Formula
        If a1 <> a2 Then
            h3.Range(d) = "formula diferente: " & a1
        Else
            If c.Value <> h2.Range(d).Value Then
                h3.Range(d) = "resultado de fórmula diferente: " & c
            End If
        End If
    Else
        a1 = c.Value
        d = c.Address
        a2 = h2.Range(d).Value
        If a1 <> a2 Then
            h3.Range(d) = "dato diferente: " & a1
        End If
    End If
Next
MsgBox "Comparación terminada", vbInformation
End Sub

Saludos.Dante

Si es lo que necesitas no olvides valorar la respuesta.

me funciona excelente sólo que las fórmulas me dice que son diferentes por el idioma, uso las fórmulas en español, y la macro me las devuelve en inglés, como lo puedo cambiar?

Las fórmulas son comparadas en inglés. El inglés es el idioma original o natural de las fórmulas, es decir, no estoy comparando libroa con fórmulas en español y el librob con fórmulas en inglés. La comparación de ambos libros se hace en inglés.

Poner la fórmula que tiene diferencia es un plus que agregué a la macro, no se puede poner la fórmula en español, ya que las fórmulas funcionan en inglés solamente que se aprecian en español por un traductor que tiene excel.

Si no quieres que aparezca la fórmula en inglés, la puedo quitar y solamente pongo el texto: "fórmula diferente", esta era la petición original.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas