Saltar al contenido

Separar datos de una hoja en varias hojas

publicado

Buena tardes. Tengo una duda, se podrá separar los datos de una hoja en varias hojas siguiendo un criterio. Por ejemplo, tengo una base de datos de miles de trabajadores (filas), con muchísimos datos (columnas) y que son de diferentes empresas, lo que quiero saber es si se puede separar todos esos trabajadores dependiendo de la empresa a la que pertenecen de manera automatizada sin tener que estar filtrando y copiando los datos que necesito. Aquí subo un ejemplo de lo que necesito, gracias de antemano por su respuesta.

Modelo 1.xlsxFetching info...

Featured Replies

publicado

Preguntas:

  • ¿Las hojas ya existen o hay que crearlas?
  • Si ya existen, ¿Hay que sustituir la información o hay que añadirla a la existente?

Quedo a la espera.

publicado
  • Autor
  En 30/3/2024 at 17:55 , Antoni dijo:

Preguntas:

  • ¿Las hojas ya existen o hay que crearlas?
  • Si ya existen, ¿Hay que sustituir la información o hay que añadirla a la existente?

Quedo a la espera.

Buenas tardes, gracias por la respuesta. Las hojas no existen, de preferencia que se creen automáticamente.

publicado
Private Sub CommandButton1_Click(): Application.ScreenUpdating = False
    With Hoja1
        .Range("G:G").AdvancedFilter 2, , .Range("A3"), 1
        For x = 4 To .Range("A" & Rows.Count).End(xlUp).Row
            empresa = Cells(x, 1)
            With Hoja1.Range("C2").CurrentRegion
                .AutoFilter 5, empresa
                ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
                ActiveSheet.Name = empresa
                .SpecialCells(12).Copy Sheets(empresa).Range("A1")
                .AutoFilter
            End With
        Next x
        .Columns(1).Clear
    End With
End Sub

 

Modelo 1.xlsmFetching info...

publicado
  En 31/3/2024 at 11:22 , JSDJSD dijo:
Private Sub CommandButton1_Click(): Application.ScreenUpdating = False
    With Hoja1
        .Range("G:G").AdvancedFilter 2, , .Range("A3"), 1
        For x = 4 To .Range("A" & Rows.Count).End(xlUp).Row
            empresa = Cells(x, 1)
            With Hoja1.Range("C2").CurrentRegion
                .AutoFilter 5, empresa
                ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
                ActiveSheet.Name = empresa
                .SpecialCells(12).Copy Sheets(empresa).Range("A1")
                .AutoFilter
            End With
        Next x
        .Columns(1).Clear
    End With
End Sub

 

Modelo 1.xlsm 64.49 kB · 0 descargas

¡Perfecto!, con esto me ahorro la solución. 😀

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.