Transportar registros de una tabla a otras hojas

Tengo en la hoja 1 una tabla de datos (registro de personas). En ella se recogen datos: nombre, apellidos, dirección, taller al que asisten, etc. Me gustaría, si se puede, transportar los datos de la tabla principal de la hoja 1, a otras hojas en base al taller que asisten. Por ejemplo, todos las personas de manualidades a la hoja 2, los de teatro a la hoja 3, los de baile a la hoja 4, etc. Lo he intentado transportando todos los datos a cada hoja y filtrando ahí. El problema es que los filtros no son automáticos; si añado o modifico un dato en lo hoja 1, tengo que borrar los filtros en todas las hojas y aplicarlos de nuevo. No sé si se puede realizar algo parecido.

¡Muchísimas gracias de antemano! Un saludo.

2 respuestas

Respuesta
2

h o l a:

Te anexo la macro 

Sub copiar()
'Por.DAM
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
Set h3 = Sheets("Hoja3")
Set h4 = Sheets("Hoja4")
A = "Manualidades"
B = "Baile"
C = "Teatro"
j = 2
For i = 2 To h1.Range("D" & Rows.Count).End(xlUp).Row
    If h1.Cells(i, "D") = A Then
        h1.Range("A" & i & ":D" & i).Copy h2.Range("A" & j)
        j = j + 1
    ElseIf h1.Cells(i, "D") = B Then
    h1.Range("A" & i & ":D" & i).Copy h3.Range("A" & j)
    ElseIf h1.Cells(i, "D") = C Then
    h1.Range("A" & i & ":D" & i).Copy h4.Range("A" & j)
    End If
Next
End Sub

Me comentas y valora para finalizar saludos!

Te anexo la macro actualizada

Sub copiar()
'Por temp01 Macro actualizada
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
Set h3 = Sheets("Hoja3")
Set h4 = Sheets("Hoja4")
A = "Manualidades"
B = "Baile"
C = "Teatro"
j = 2
x = 2
Z = 2
For i = 2 To h1.Range("D" & Rows.Count).End(xlUp).Row
    If h1.Cells(i, "D") = A Then
        h1.Range("A" & i & ":D" & i).Copy h2.Range("A" & j)
        j = j + 1
     End If
    If h1.Cells(i, "D") = B Then
        h1.Range("A" & i & ":D" & i).Copy h3.Range("A" & x)
        x = x + 1
   End If
       If h1.Cells(i, "D") = C Then
        h1.Range("A" & i & ":D" & i).Copy h4.Range("A" & Z)
        Z = Z + 1
    End If
Next
End Sub

Muchas gracias Adriel!

La verdad (y mi problema) es que controlo muy poco de macros. He creado uno, he copiando y pegando lo que me has dado y... ¡funciona! El tema es que la base de datos original tiene más columnas (más datos). Necesito filtrar por el campo "Taller 1". Te pongo la captura de la tabla por si puedes ayudarme. 

Muchas gracias!

H o l a: pach111

Te paso la macro actualizada

Sub copiar()
'Por temp01 Macro actualizada
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
Set h3 = Sheets("Hoja3")
Set h4 = Sheets("Hoja4")
A = "Manualidades"
B = "Baile"
C = "Teatro"
j = 7
x = 7
Z = 7
For i = 2 To h1.Range("K" & Rows.Count).End(xlUp).Row
    If h1.Cells(i, "K") = A Then
        h1.Range("A" & i & ":P" & i).Copy h2.Range("A" & j)
        j = j + 1
     End If
    If h1.Cells(i, "K") = B Then
        h1.Range("A" & i & ":P" & i).Copy h3.Range("A" & x)
        x = x + 1
   End If
       If h1.Cells(i, "K") = C Then
        h1.Range("A" & i & ":P" & i).Copy h4.Range("A" & Z)
        Z = Z + 1
    End If
Next
MsgBox "copia terminada", vbInformation
End Sub

Me comentas y valora la respuesta para finalizar saludos!!

Es esto

Sub copiar()
'Por temp01 Macro actualizada
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
Set h3 = Sheets("Hoja3")
Set h4 = Sheets("Hoja4")
A = "Manualidades"
B = "Baile"
C = "Teatro"
j = 2 'fila para copia en la hoja 2
x = 2 'fila para copia en la hoja 3
Z = 2 'fila para copia en la hoja 4
For i = 7 To h1.Range("K" & Rows.Count).End(xlUp).Row
    If h1.Cells(i, "K") = A Then
        h1.Range("A" & i & ":P" & i).Copy h2.Range("A" & j)
        j = j + 1
     End If
    If h1.Cells(i, "K") = B Then
        h1.Range("A" & i & ":P" & i).Copy h3.Range("A" & x)
        x = x + 1
   End If
       If h1.Cells(i, "K") = C Then
        h1.Range("A" & i & ":P" & i).Copy h4.Range("A" & Z)
        Z = Z + 1
    End If
Next
MsgBox "copia terminada", vbInformation
End Sub

Me comentas y valora la respuesta para finalizar saludos!!

¡Muchísimas gracias, Adriel! Creo que tendré que ponerme las pilas con los macros. Funciona perfectamente. Tendré que buscarme una guía o tutorial de macros para modificar lo que me has mandado y añadirle más hojas y más talleres.

Lo dicho, ¡Muchísimas gracias! 

Respuesta
1

Se pueden hacer muchas cosas para automatizar el copiado de datos, pero en tu caso, creo que lo mejor será que cambies el orden.

Primero filtra en la Hoja1 y luego copia el resultado que te interesa en la hoja2, 3, etc...

Muchas gracias gregori00001

El tema es que no sé la fórmula para filtrar. Se hacerlo desde el menú de la cita de opciones, pero no conozco la fórmula... o cómo hacerlo. Y la verdad, controlo poco en general.

Esta es la tabla original... por si puedes ayudarme. Muchas gracias!!

A lo que me refería es que filtres en la tabla que muestras por ejemplo por Manualidades, copies los resultados y los pegues en la hoja que corresponda y así para los diferentes talleres.

Es relativamente poco trabajo como para utilizar una macro, que siempre requerirá un mantenimiento. Por ejemplo la macro de Ariel, si un día quieres añadir un Taller diferente a Manualidades, Baile o Teatro, ya no te funcionará. Aunque Ariel ha hecho muy buen trabajo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas