Comparar columnas entre hojas

Hola kapapri, estoy tratando de hacer una macro que compara columnas entre dos hojas (cdec-00 y nueva), la idea es que si encuentre una coincidencia, copie la información de esa fila completa desde la hoja cdec a nueva, pero no se porque no me funciona. Lo importante es que la lista en la hoja "nueva" no sea modificada ademas de los datos que se le inserten ya esa lista seria la final.
Aquí va lo que llevo
Sub comparando()
Application.ScreenUpdating = False
copiada = 2
Sheets("Cdec-00").Select
Range("A2").Select
final = Range("A2").End(xlDown).Row
For fila = 2 To final
For fila2 = 2 To final
If Sheets("Cdec-00").Cells(fila, 1) = Sheets("nueva").Cells(fila2, 1).Value Then
ActiveCell.EntireRow.Copy Destination:=Sheets("nueva").Cells(copiada, 1)
copiada = copiada + 1
End If
fila2 = fila2 + 1
Next
fila = fila + 1
Sheets("Cdec-00").Select
ActiveCell.Offset(1, 0).Select
Next
End Sub
Muchas gracias si alguien me puede ayudarHola, estoy tratando de hacer una macro que compara columnas entre dos hojas (cdec-00 y nueva), la idea es que si encuentre una coincidencia, copie la información de esa fila completa desde la hoja cdec a nueva, pero no se porque no me funciona.
aqui va lo que llevo
Sub comparando()
Application.ScreenUpdating = False
copiada = 2
Sheets("Cdec-00").Select
Range("A2").Select
final = Range("A2").End(xlDown).Row
For fila = 2 To final
For fila2 = 2 To final
If Sheets("Cdec-00").Cells(fila, 1) = Sheets("nueva").Cells(fila2, 1).Value Then
ActiveCell.EntireRow.Copy Destination:=Sheets("nueva").Cells(copiada, 1)
copiada = copiada + 1
End If
fila2 = fila2 + 1
Next
fila = fila + 1
Sheets("Cdec-00").Select
ActiveCell.Offset(1, 0).Select
Next
End Sub
Muchas gracias si me puede ayudar
1

1 respuesta

Respuesta
1
Algunos alcances.
Estas copiando desde cdec-00 a la hoja nueva. Ahora bien si hoja nueva tiene más lineas que hoja cdec-oo solo comparara hasta el final de lineas de cdec-00.
otra cosa estas saltandote 2 lineas en nueva, ya que pones fila2=fila2+1 y luego pones next fila2.
Lo mismo con fila1. Estas repitiendo la instrucción, ya que next es lo mismo que filaX+1.
No se si entiendo bien pero creo que deberías pegar los datos a una tercera oja, ya que elo que haces es reemplazar los valores en la hoja nueva. Nada más.
Ademas al poner copiada=copiada +1 y no encuentra una coincidencia la siguiente coincidencia se cipoara en la fila "copiada" lo que hace que las finas de la hoja nueva se corran hacia arriba en sus valores nuevos. Así por ejemplo en filas del 1 al 10 en hoja cdec y filas 1-10 de hoja nueva en una no cincidencia tendrás 2 veces la fila 10 en hoja nueva porque todo se corrió hacia arriba 1 vez
Si lo que deseas es sobresscribir los datos de una fila-celda indice de heja dce a hoja nueva debes arreglar el código.
Creo que si es copiando o sobreescriviendo en hoja nueva en la respectiva linea, el código debe ser:
Sub comparando()
Application.ScreenUpdating = False
Sheets("Cdec-00").Select
Range("A2").Select
Final = Range("A2").End(xlDown).Row
    For fila = 2 To Final
    Sheets("Cdec-00").Select
    Cells(fila, 1).Select
        For fila2 = 2 To Final
        ORIGEN = Sheets("Cdec-00").Cells(fila, 1)
        DESTINO = Sheets("nueva").Cells(fila2, 1).Value
                If ORIGEN = DESTINO Then
                ActiveCell.EntireRow.Copy Destination:=Sheets("nueva").Cells(fila2, 1)
                End If
        Next
    Next
End Sub
Pero se mantiene la restricción de que ambas hojas deben tener =cantidad de filas.
Bueno espero aclare tus dudas y no solo copies el código.
Muchas gracias, me funciona perfecto y entendí donde estaba mi error. Me funciona perfecto aunque las hojas no tienen igual cantidad de filas. Mi macro es mucho más grande que eso ya que debe hacer varias cosas más, así que gracias por explicarme donde estaban los errores.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas