Buen día, estoy realizando una macro que compara datos de la hoja Dump 1 con la hoja Dump 2.

Me da un error fuera de intervalo cuando for i=4, La macro primero busca el nombre que es A, B o C en la hoja Dump1 después lo busca en la hoja dump2 y después empieza acomparar los valores de DE, E, F y si tiene valores diferentes los pone en rojo y los escribe en la hoja resumen.

El código es el siguiente:

Sub Comparar()
NumFilas = Application.CountA(Sheets("Dump1").Range("A:A"))
NumColums = Sheets("Dump1").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
NumFilas2 = Application.CountA(Sheets("Dump2").Range("A:A"))
NumColums2 = Sheets("Dump2").Cells(1, Cells.Columns.Count).End(xlToLeft).Column

If NumFilas < NumFilas2 Then
TotFilas = NumFilas
Else
TotFilas = NumFilas2
End If
If NumColums < NumColums2 Then
TotColums = NumColums
Else
TotColums = NumColums2
End If

Set cell = Worksheets("Dump1").Cells.Find("name") 'busca name
indColDUMP = cell.Column

Set cell = Worksheets("Dump2").Cells.Find("name") 'busca name
indColDUMP2 = cell.Column

ReDim CellDUMP1(1 To TotColums - indColDUMP) As String
ReDim CellDUMP2(1 To TotColums - indColDUMP2) As String
ReDim ParDUMP1(1 To TotColums - indColDUMP) As String
ReDim ParDUMP2(1 To TotColums - indColDUMP2) As String
ReDim ValDUMP1(1 To TotColums - indColDUMP) As String
ReDim ValDUMP2(1 To TotColums - indColDUMP2) As String
For i = 2 To TotFilas
CellDUMP1(i) = Worksheets("Dump1").Cells(i, indColDUMP).Value ---------> acá muestra el error
If CellDUMP1(i) <> "" Then
For j = 2 To TotFilas
CellDUMP2(i) = Worksheets("Dump2").Cells(j, indColDUMP2).Value
If CellDUMP1(i) = CellDUMP2(i) Then
For k = 1 To TotColums - indColDUMP
ParDUMP1(k) = Worksheets("Dump1").Cells(1, k + indColDUMP).Value
ValDUMP1(k) = Worksheets("Dump1").Cells(j, k + indColDUMP).Value
If ParDUMP1(k) <> "" Then
For l = 1 To TotColums - indColDUMP2
ParDUMP2(l) = Worksheets("Dump2").Cells(1, l + indColDUMP2).Value
ValDUMP2(l) = Worksheets("Dump2").Cells(j, l + indColDUMP2).Value
If ParDUMP1(k) = ParDUMP2(l) Then
If ValDUMP1(k) <> ValDUMP2(l) Then
Worksheets("Dump1").Cells(j, l + indColDUMP).Interior.Color = vbGreen
Worksheets("Dump2").Cells(j, l + indColDUMP2).Interior.Color = vbRed
'-----------------------Resumen---------------------------
NumFilasP = Application.CountA(Sheets("Resumen").Range("A:A"))
f1 = NumFilasP + 1
NumColumsP = Sheets("Resumen").Cells(f1, Cells.Columns.Count).End(xlToLeft).Column
f2 = NumColumsP + 1
Worksheets("Resumen").Cells(f1, 1) = CellDUMP1(i)
Worksheets("Resumen").Cells(f1, 3) = ParDUMP2(l)
Worksheets("Resumen").Cells(f1, 4) = ValDUMP1(k)
Worksheets("Resumen").Cells(f1, 5) = ValDUMP2(l)
End If
End If
Next l
End If
Next k
End If
Next j
End If
Next i

MsgBox "Revision Terminada"
End Sub

El archivo es el siguiente:

https://drive.google.com/file/d/1XqpHkkTgFgzLfKcqjHdhjEE3FcBknkg6/view?usp=sharing 

Añade tu respuesta

Haz clic para o