Como copiar contenido de muchas hojas en una sola, la idea es hacer un resumen.

Me gustaría pegar varias hojas (aproximado 70 ) en una sola, la cual esta creada y se llama "REPORTE"

Las hojas las cuales quiero copiar es a partir del rango (A10:G10) desde ahí hacia abajo y las debo pegar en la hoja REPORTE a partir de (A3:G3). Para DANTE AMOR ! Maestro!

Saludos y gracias a los que respondan en especial a dante :D

1 Respuesta

Respuesta
1

H o l a:

Te anexo la macro

Sub Reporte()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("REPORTE")
    h1.UsedRange.Offset(2, 0).ClearContents
    u2 = 3
    For Each h In Sheets
        If h.Name <> h1.Name Then
            umax = 3
            For j = 1 To h.Columns("G").Column
                uf = h.Cells(Rows.Count, j).End(xlUp).Row
                If uf > umax Then umax = uf
            Next
            h.Range("A3:G" & umax).Copy
            h1.Range("A" & u2).PasteSpecial xlValues
            u2 = u2 + umax - 2
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Reporte finalizado"
End Sub

':)
'S aludos. D a n t e   A m o r . R ecuerda valorar la respuesta. G racias
':)R ecuerda valorar la respuesta. G r a c i a s

Hola dante, el código enviado me pega el contenido de las celdas a partir de la celda (A7) en la hoja reporte y necesito que se pegue en la celda (A3:G10) y además el contenido que pega lo debe copiar de las demás hojas desde el rango (A10:G10) y ahí hacia abajo. Espero atento tu respuesta y gracias por tu tiempo amigo. Saludos cordiales.

Atte Jorge Olguin

si gustas te puedo enviar el archivo y verificas tu.  Saludos amigo!!

Prueba con esta:

Sub Reporte()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("REPORTE")
    h1.UsedRange.Offset(2, 0).ClearContents
    u2 = 3
    For Each h In Sheets
        If h.Name <> h1.Name Then
            umax = 3
            For j = 1 To h.Columns("G").Column
                uf = h.Cells(Rows.Count, j).End(xlUp).Row
                If uf > umax Then umax = uf
            Next
            h.Range("A10:G" & umax).Copy
            h1.Range("A" & u2).PasteSpecial xlValues
            u2 = u2 + umax - 2
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Reporte finalizado"
End Sub

La macro copia de A10:G hasta la última fila.

Y pega a partir de la A3


Si falta algún detalle, dime en cuál de las columnas de la A a la G siempre hay datos, eso me sirve para tomarlo como referencia y saber cuál es la última fila con datos.

Si la macro funciona como la quieres, entonces podrías cambia la valoración de la respuesta.

El pegado y todo funciona bien excepto que al momento de pegar lo hace con una diferencia de 7 celdas entre pegado, es decir pega la hoja 1 todo su contenido y 7 celdas más abajo pega el contenido de la hoja 2 y así sucesivamente. Saludos amigo.

Lo que pasa es que de la celda 10 hacia abajo debes tener espacios en blanco, revisa los datos de cada hoja.

O a lo mejor tienes espacios en las primeras filas de la 10 hacia abajo.

Revisa que en las celdas donde no tengas datos, tengas vacíos, es decir, que realmente la celda se encuentre en vacía, puede ser que tengas espacios en blanco.

También revisa que en la hoja "reporte" tengas vacíos, a lo mejor en esa hoja tienes datos en blanco.

Prueba en un libro nuevo con datos nuevos, verás que la macro funciona bien, el detalle son tus datos.

No olvides cambiar la valoración de la respuesta.

Estimado sigue sucediendo lo mismo, probé con una hoja nueva y pasa lo mismo. Me asegure que esas 7 celdas que se pegan en blanco estuvieran vacías y las elimine. Quizás te puede enviar el archivo y lo revisas. Mi correo es [email protected]

H o l a:

Envíame tu archivo con la macro y con el resultado de la macro .

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Jorge Olguin” y el título de esta pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas