Código para copiar a otra hoja de excel

Tengo el siguiente código :

Sub CopiarInfo2()
For Each hoja In Worksheets
If hoja.Name <> "DATOS" Then
Worksheets("DATOS").Range("$A$2:$R$10").AutoFilter FIELD:=18, Criteria1:=hoja.Name
uFila = Worksheets("DATOS").Range("A" & Rows.Count).End(xlUp).Row
Worksheets("DATOS").Range("F2:Q" & uFila).Copy Destination:=Worksheets(hoja.Name).Range("A" & Rows.Count).End(xlUp).Offset(1)
End If
Next
End Sub

Bueno lo que hace es copiar los datos filtrados a los nombres de las hojas según el valor de la columna R, pero lo que quiero es que solo copie a los que figuren en dicha columna, no en todas la hojas.

1

1 Respuesta

4.395.300 pts. Sancho, si los perros ladran ...

H o l a:

Prueba con la siguiente macro

Sub CopiarInfo3()
'Por.Dante Amor
    Set h1 = Sheets("DATOS")
    For i = 2 To h1.Range("R" & Rows.Count).End(xlUp).Row
        hoja = h1.Cells(i, "R")
        h1.Range("F" & i & ":Q" & i).Copy Sheets(hoja).Range("A" & Rows.Count).End(xlUp).Offset(1)
    Next
    MsgBox "fin"
End Sub

':)
S a l u d o s . D a n t e   A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

Gracias Gracias por la respuesta, y disculpa la molestia pero como seria si filtro eligiendo a un dato digamos AAA1 y solo copie a esa hoja, porque con el código que muy gentilmente me proporcionaste por más que filtre un dato igual copia a todos.

Un saludo cordial

Jesús

Cambia la macro por esta:

Sub CopiarInfo3()
'Por.Dante Amor
    Set h1 = Sheets("DATOS")
    For i = 2 To h1.Range("R" & Rows.Count).End(xlUp).Row
        If h1.Rows(i).Hidden = False Then
            hoja = h1.Cells(i, "R")
            h1.Range("F" & i & ":Q" & i).Copy Sheets(hoja).Range("A" & Rows.Count).End(xlUp).Offset(1)
        End If
    Next
    MsgBox "fin"
End Sub

':)
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas