Cómo comparar 2 rangos de Excel

Como comparar información de excel

A veces tenemos que comparar distintos rangos de Excel, para lo que tenemos dos opciones: o lo hacemos visualmente o lo hacemos a través de una macro. Y en el extenso mundo de las macros también tenemos dos posibilidades, una muy interesante y otra igual de pesada que la comparación visual: una comparativa celda a celda de Excel, para lo que te pasarás el rato creando macros. Por eso, la mejor opción para comparar dos rangos de Excel es utilizando una macro o VBA de comparación, que nos aportará la mejor información sobre ambos rangos.

VBA para rangos de igual longitud

En primer lugar vamos a ver una macro para dos rangos de igual longitud, es decir con el mismo número de filas y columnas. Esta macro nos permite comparar por diferencias el contenido de los dos rangos con los que estamos trabajando, y tiene la ventaja de que se puede utilizar en para comparar dos rangos de la misma hoja o de diferentes hojas de Excel, pero siempre en el mismo libro de Excel.

La comparación se realiza introduciendo los rangos de entrada a través del método InputBox, especificando que es un rango (Type:=8). La macro a introducir es la siguiente:

Sub compararRangos()
'Compara el contenido de dos rangos de valores
'
Dim fila As Long
Dim columna As Long
Dim nFilas As Long
Dim nColumnas As Long
Dim rango1 As Range
Dim rango2 As Range

Set rango1 = Application.InputBox("Rango de entrada 1", Type:=8)
Set rango2 = Application.InputBox("Rango de entrada 2", Type:=8)

nFilas = rango1.Rows.Count
nColumnas = rango1.Columns.Count

For fila = 1 To nFilas
For columna = 1 To nColumnas
If rango1.Cells(fila, columna) <> rango2.Cells(fila, columna) Then
rango1.Cells(fila, columna).Interior.ColorIndex = 36
rango2.Cells(fila, columna).Interior.ColorIndex = 36
End If
Next columna
Next fila

End Sub

Como siempre decimos, es imprescindible respetar los espacios y las diferentes líneas. En esta ocasión sois vosotros los que tendréis que completar la fórmula de la macro, indicando la fila de Excel y la columna donde empieza y acaba el rango. Una vez introducida y aplicada la macro, verás que las celdas con datos diferentes en ambos rangos aparecerán sombreadas en los dos rangos.

VBA para rangos de diferente longitud

Sin embargo esa macro no nos servirá si queremos comparar dos rangos con longitudes distintas. Dicho de otra manera, si no tienen el mismo número de filas y columnas (un rango tiene más filas, el otro más columnas, etc.) necesitaremos una macro especial. También compara por diferencias, nos sirve para comparar rangos situados en distintas hojas del mismo libro de Excel, etc.; pero en esta ocasión también comparará rangos de diferentes longitudes, algo imposible con la macro anterior. En este caso, la fórmula a utilizar es la siguiente:



Sub compararRangosDiferenteLongitud()
'Compara el contenido de dos rangos de valores
'Los rangos de valores pueden tener longitudes diferentes
'
Dim fila As Long
Dim columna As Long
Dim nFilas1 As Long
Dim nColumnas1 As Long
Dim nFilas2 As Long
Dim rango1 As Range
Dim rango2 As Range
Dim totalFilas As Long

Set rango1 = Application.InputBox("Rango de entrada 1", Type:=8)
Set rango2 = Application.InputBox("Rango de entrada 2", Type:=8)

nFilas1 = rango1.Rows.Count
nColumnas1 = rango1.Columns.Count

nFilas2 = rango2.Rows.Count

If nFilas1 >= nFilas2 Then
totalFilas = nFilas1
Else
totalFilas = nFilas2
End If

For fila = 1 To totalFilas
For columna = 1 To nColumnas1
If rango1.Cells(fila, columna) <> rango2.Cells(fila, columna) Then
rango1.Cells(fila, columna).Interior.ColorIndex = 36
rango2.Cells(fila, columna).Interior.ColorIndex = 36
End If
Next columna
Next fila

End Sub

Como en la macro que hemos visto en el punto anterior, el resultado será que tenemos las celdas con contenidos diferentes en ambos rangos sombreadas. También aparecerán sombreadas las celdas vacías del rango más corto, ya que el contenido es diferente entre ambos rangos.

Cómo ampliar un rango de Excel

  • ¿Te ha servido de ayuda?
  • No