Copiar filas a hoja resumen

Necesito una macro o formula que copie las filas rellenas, incluido el formato a partir de la cuarta fila de al menos 30 hojas distintas en una hoja llamada resumen ocupando siempre la primera fila vacía disponible y que se ejecute desde un botón o enlace que este en la hoja informe.
Me explico:
HOJA 3 resumen
A B C D E
1 recopilación de datos
2
3
4
Vacía hasta que ejecutamos la macro, solo contiene de forma permanente la primera fila de encabezamiento.
Hoja 4 pepito
A B C D E
3 títulos
4 X X X X X
5 Z Z Z Z Z
6
HOJA 5 FULANITO
A B C D E
3 títulos
4 Q Q Q Q Q
5
6
HOJA 6 MANOLITO
A B C D E
3 títulos
4 W W W W W
5
6
Asi hasta n paginas
Y el resultado seria:
HOJA 3 resumen
A B C D E
1 recopilación de datos
2 X X X X X
3 Z Z Z Z Z
4 Q Q Q Q Q
5 W W W W W
6
7
Al ejecutar la macro también tienen que borrarse los datos de las diferentes hojas, pero no el formato, menos las filas 1,2,3,4y 26, que contienen encabezamientos, por lo que a lo mejor es mas correcto decir cortar y pegar que copiar. También debe borrarse el contenido previo de la hoja resumen incluido el formato pero no la combinación de celdas. La macro debe saltarse la hoja 1 "MATRIZ" y 2 "GRÁFICO" porque contienen datos que no son relévantes para el resumen.

En todas las hojas hay celdas unidas y formatos condicionales.

Ademas necesito instrucciones de como pegar el texto de la macro y donde ya que siempre que he hecho una macro a sido grabando acciones y no conozco muy bien VB.

Tal vez lo mejor seria que os envíe el archivo para que le echáis un vistazo.
Muchas gracias de antemano, se que aquí encontrare lo que busco cracks.

1 respuesta

Respuesta
1

Tu hoja con el resultado se deberá llamar "resumen"

Sigue las Instrucciones para un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu hoja "resumen", elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro / Selecciona: ultimas
9. Aceptar.
10. Para ejecutarla dale click a la imagen.

Sub ultimas()
'copia las últimas filas
'por.dam
Application.ScreenUpdating = False
Set h1 = Sheets("resumen")
h1.Select
    ufila = ActiveCell.SpecialCells(xlLastCell).Row
    If ufila = 1 Then ufila = 2
    ucol = ActiveCell.SpecialCells(xlLastCell).Column
    h1.Range(Cells(2, 1), Cells(ufila, ucol)).Clear
    On Error Resume Next
    ffin = h1.UsedRange.Find(what:="*").Row
    ActiveCell.SpecialCells(xlLastCell).Select
ufilaencontrada = 0
For Each hoja In Worksheets
    Set h2 = Sheets(hoja.Name)
    h2.Select
    Application.StatusBar = "Copiando hoja: " & hoja.Name
    Select Case hoja.Name
        Case "MATRIZ", "GRAFICO", "GRÁFICO", "resumen"
        Case Else
            ufila = ActiveCell.SpecialCells(xlLastCell).Row
            ucol = ActiveCell.SpecialCells(xlLastCell).Column
            For i = ufila To 4 Step -1
                For j = 1 To ucol
                    If h2.Cells(i, j) <> "" Then
                        udes = h1.Range("A1").SpecialCells(xlLastCell).Row + 1
                        h2.Range(Cells(4, 1), Cells(i, ucol)).Copy _
                        h1.Range("A" & udes)
                        h2.Range(Cells(4, 1), Cells(ufila, ucol)).ClearContents
                        j = ucol
                        ufilaencontrada = 1
                        h1.Select
                    End If
                Next
                If ufilaencontrada = 1 Then i = 1
                    ufilaencontrada = 0
            Next
    End Select
Next
Application.StatusBar = False
Application.ScreenUpdating = True
h1.Select
MsgBox "Copias Terminadas", vbInformation, "COPIAR"
End Sub

Prueba y me comentas.

Saludos. Dam
Si es lo que necesitas.

funciona a la perfección!!!!

pero como te pedía no pueden borrarse los textos de las filas 1,2,3,4,5,27 y 28 de todas las hojas para que el archivo me siga sirviendo(son encabezamientos). Otra cosita es que han desaparecido las formulas de las columnas BP, BQ Y BR que son columnas que suman y envían datos a la pestaña matriz.

Cabe la posibilidad de que solo se copien las filas que contienen texto o ya es mucho pedir, je je je.

Por lo demás genial, gracias por vuestra pronta respuesta, sois increíbles!!!

si crees que viendo el archivo te resultara mas fácil llegar al resultado final dime como puedo enviártelo y enseguida te lo mando.

Gracias otra vez por vuestro esfuerzo, un saludo.

Cambia la macro por esta, prueba y me comentas

Sub ultimas()
'copia las últimas filas
'por.dam
tit = 3
tot = 27
colt = Range("BP1").Column
Application.ScreenUpdating = False
Set h1 = Sheets("resumen")
h1.Select
    ufila = ActiveCell.SpecialCells(xlLastCell).Row
    If ufila = 1 Then ufila = 2
    ucol = ActiveCell.SpecialCells(xlLastCell).Column
    h1.Range(Cells(2, 1), Cells(ufila, ucol)).Clear
    On Error Resume Next
    ffin = h1.UsedRange.Find(what:="*").Row
    ActiveCell.SpecialCells(xlLastCell).Select
ufilaencontrada = 0
For Each hoja In Worksheets
    Set h2 = Sheets(hoja.Name)
    h2.Select
    Application.StatusBar = "Copiando hoja: " & hoja.Name
    Select Case hoja.Name
        Case "MATRIZ", "GRAFICO", "GRÁFICO", "resumen"
        Case Else
            ufila = ActiveCell.SpecialCells(xlLastCell).Row
            ucol = ActiveCell.SpecialCells(xlLastCell).Column
            For i = tot - 1 To tit Step -1
                For j = 1 To ucol
                    If h2.Cells(i, j) <> "" Then
                        udes = h1.Range("A1").SpecialCells(xlLastCell).Row + 1
                        h2.Range(Cells(tit + 1, 1), Cells(i, ucol)).Copy _
                        h1.Range("A" & udes)
                        h2.Range(Cells(tit + 1, 1), Cells(tot - 1, colt - 1)).ClearContents
                        j = ucol
                        ufilaencontrada = 1
                        h1.Select
                    End If
                Next
                If ufilaencontrada = 1 Then i = 1
                    ufilaencontrada = 0
            Next
    End Select
Next
Application.StatusBar = False
Application.ScreenUpdating = True
h1.Select
MsgBox "Copias Terminadas", vbInformation, "COPIAR"
End Sub

Te puse estas líneas en el código, para que cambies los números dentro de la macro según tengas los datos.
Pon la fila donde tienes los títulos
tit = 3
Pon la fila donde tienes tus totales
tot = 27
Pon la columna donde tienes las fórmulas
colt = Range("BP1").Column

Saludos. Dam

Si es lo que necesitas.

Sigue funcionando, ahora me deja las formulas donde quería pero solo copia la primera parte de las pestañas. Creo que antes no me esplique bien, por lo que ahora intentare hacerlo mejor, ademas he modificado el archivo para que sea mas fácil, esta es la descripción de la pestaña tipo:

Fila 1.- descripción de la hoja, debe copiarse pero no borrarse.

Fila 2.- conceptos que se listan, debe copiarse pero no borrarse.

Filas de la 3 a la 23 ambas incluidas.- aquí recopilamos fechas, textos y contadores, deben copiarse y borrarse solo a excepción de los formatos de celda y las formulas de la columna BP como hasta ahora, esta parte esta ok.

Fila 24.- mismos conceptos que en la parte anterior pero de departamento, debe copiarse pero no borrarse.

Filas de la 25 a la 44 ambas incluidas.- aquí también recopilamos fechas, textos y contadores, deben copiarse y borrarse a excepción de de los formatos de celda y las formulas de la columna BP.

por lo que he entendido hay que cambiar y describir que hay tres filas de títulos que son 1,2,y 24.

No existen totales porque lo que se recopila en estas paginas son preguntas( textos) que se contean en la columna BP (por eso hay que respetar las formulas de esta columna) y que de hay pasan a la hoja MATRIZ y GRÁFICO (por eso hay que dejar estas hojas aparte).

La intención de la hoja resumen es listar las diferentes preguntas con la fecha en la que se recopilaron, por eso lo ideal es que las filas 1, 2 y 24 se copien siempre pero no se borren y que de los intervalos 3 a 23 y 25 a 44 se copien y se borren solo las filas que se han rellenado pero que no se copien las lineas vacías que quedan dentro de estos intervalos.

Espero haber sido mas explicito esta vez, como siempre darte las gracias por adelantado y mandarte un saludo.

PD.- si puedes introducir lineas que expliquen lo que hace cada parte del texto de la macro aunque tengas que hacerlo aparte te lo agradecería, estoy muy interesado en aprender para asi poder echar una mano en la medida de lo posible, por lo que si me envías algún enlace de pagina o curso con la que poder empezar a aprender a programar seria genial.

Gracias otra vez, saludos.

Creo que ahora sí tu explicación está más completa, pero la petición original está cubierta desde la primer macro, te voy a pedir un gran favor, podrías finalizar esta pregunta y crear una nueva con toda la explicación detallada de como quieres la siguiente macro.

Saludos. Dam

Muchas gracias!!!

a sido error mio no explicar bien como quería el resultado definitivo, tu trabajo a sido genial, gracias otra vez, un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas