Las cookies nos ayudan a ofrecer nuestros servicios. Al utilizar nuestros servicios, usted acepta el uso de cookies.
Consejo: Otros idiomas son traducidos por Google. Puedes visitar el English versión de este enlace.
Iniciar sesión
x
or
x
x
Registrate
x

or

¿Cómo dividir los datos en varias hojas de trabajo basadas en la columna en Excel?

Suponiendo que tiene una hoja de trabajo con grandes filas de datos, y ahora, necesita dividir los datos en varias hojas de trabajo basadas en el Contacto columna (ver la siguiente captura de pantalla), y los nombres se ingresan al azar. Tal vez puedas ordenarlos primero, y luego copiarlos y pegarlos uno por uno en otras nuevas hojas de trabajo. Pero esto necesitará tu paciencia para copiar y pegar repetidamente. Hoy, hablaré sobre algunos trucos rápidos para resolver esta tarea.

doc dividir datos por columnas 1

Divida los datos en varias hojas de trabajo basadas en columnas con código VBA

Divida los datos en varias hojas de trabajo basadas en la columna con Kutools para Excel


Divida los datos en varias hojas de cálculo basadas en columna específica o recuento de filas en la hoja de trabajo:

Si desea dividir una hoja de cálculo grande en varias hojas según los datos de columna específicos o el recuento de filas, el Kutools for Excel's Dividir datos la característica puede ayudarlo a resolver esta tarea de manera rápida y fácil.

doc dividir datos por columnas 6

Kutools for Excel: con más de 200 útiles complementos de Excel, de prueba sin límite en días 60. Descargar y prueba gratis ahora!


Divida los datos en varias hojas de trabajo basadas en columnas con código VBA


Si desea dividir los datos según el valor de la columna de forma rápida y automática, el siguiente código VBA es una buena opción. Por favor haz lo siguiente:

1. Mantenga presionado el ALT + F11 teclas para abrir el Microsoft Visual Basic para aplicaciones ventana.

2. Hacer clic recuadro > Móduloy pegue el siguiente código en la Ventana del Módulo.

Sub Splitdatabycol()
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
Sheets(myarr(i) & "").Paste Destination:=Sheets(myarr(i) & "").Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub

3. Entonces presione F5 para ejecutar el código, y se abrirá un cuadro de aviso para recordarle que seleccione la fila del encabezado, vea la captura de pantalla:

doc dividir datos por columnas 7

4. Y luego, haz clic OK y, en el segundo cuadro de solicitud, seleccione los datos de la columna que desea dividir según, vea la captura de pantalla:

doc dividir datos por columnas 8

5. Luego, haz clic OK, y todos los datos en la hoja de cálculo activa se dividen en varias hojas de cálculo por el valor de la columna. Y las hojas de cálculo divididas se nombran con los nombres de celda divididos. Ver captura de pantalla:

doc dividir datos por columnas 2

notas: Las hojas de trabajo divididas se colocan al final del libro donde se encuentra la hoja de trabajo maestra.


Divida los datos en varias hojas de trabajo basadas en la columna con Kutools para Excel

Como un principiante de Excel, este código VBA largo es algo difícil para nosotros, y la mayoría de nosotros incluso no sabemos cómo modificar el código según nuestra necesidad.

Aquí, les presentaré una herramienta multifuncional--Kutools for Excel, su Dividir datos la utilidad no solo puede ayudarlo a dividir los datos en varias hojas de trabajo en función de la columna, sino que también puede dividir los datos por conteo de filas.

Kutools for Excel : con más de 300 útiles complementos de Excel, de prueba sin límite en días 60.

Si tienes instalado Kutools for Excel, haz lo siguiente:

1. Seleccione el rango de datos que desea dividir.

2. Hacer clic Kutools Más > Hoja de trabajo > Dividir datos, mira la captura de pantalla:

doc dividir datos por columnas 3

3. En la Divida los datos en varias hojas de trabajo cuadro de diálogo, necesita:

1). Seleccionar Columna específica opción en el Split basado en sección, y elija el valor de columna en el que desea dividir los datos en la lista desplegable. (Si sus datos tienen encabezados y desea insertarlos en cada nueva hoja de trabajo dividida, compruebe Mis datos tienen encabezados opción.)

2). Luego puede especificar los nombres de la hoja de trabajo dividida, debajo del Nuevo nombre de hoja de cálculo sección, especifique las reglas de nombre de la hoja de cálculo Reglas lista desplegable, puede agregar Prefijo or Sufijo para los nombres de las hojas también.

3). Haga clic en el OK botón. Ver captura de pantalla:

doc dividir datos por columnas 4

4. Ahora los datos se dividen en varias hojas de trabajo en un nuevo libro de trabajo.

doc dividir datos por columnas 5

Haga clic para descargar Kutools para Excel y prueba gratuita ¡Ahora!


Divida los datos en varias hojas de trabajo basadas en la columna con Kutools para Excel

Kutools for Excel incluye más de las útiles herramientas de Excel de 300. Gratis para probar sin limitaciones en los días 60. ¡Descargue la versión de prueba gratuita ahora!


Artículo relacionado:

¿Cómo se dividen los datos en varias hojas de cálculo por filas?



Herramientas de productividad recomendadas

Office Tab

gold star1 Lleve las pestañas útiles a Excel y a otros programas de Office, como Chrome, Firefox y el nuevo Internet Explorer.

Kutools for Excel

gold star1 ¡Asombroso! Aumente su productividad en minutos 5. ¡No necesita ninguna habilidad especial, ahorre dos horas todos los días!

gold star1 Las nuevas características de 300 para Excel hacen que Excel sea mucho más fácil y potente:

  • Fusionar celdas / filas / columnas sin perder datos.
  • Combine y consolide varias hojas y libros de trabajo.
  • Comparar rangos, copiar rangos múltiples, convertir texto a la fecha, unidad y conversión de moneda.
  • Cuenta por colores, subtotales de paginación, clasificación avanzada y superfiltro,
  • Más Seleccionar / Insertar / Eliminar / Texto / Formato / Enlace / Comentario / Libros de trabajo / Hojas de trabajo Herramientas ...

Captura de pantalla de Kutools para Excel

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Rudi Miller · 1 days ago
    Sub parse_data()
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim icol As Long
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    vcol = 1
    Set ws = Sheets("Sheet1")
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:C1"
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 To lr
    On Error Resume Next
    If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
    ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
    End If
    Next
    myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
    ws.Columns(icol).Clear
    For i = 2 To UBound(myarr)
    ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
    If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
    Else
    Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
    End If
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    End Sub
  • To post as a guest, your comment is unpublished.
    Jason · 1 months ago
    This formula is great, works perfectly for me.
    I want to split out data based on a location, which is in column 1. Which this does.
    However, is it possible to also split out based on column 2, for example. Built and Not Built. So a secondary condition also?
  • To post as a guest, your comment is unpublished.
    jose · 1 months ago
    can someone help please im using this but i keep getting to many columns. i have to keep deleting rows every time i use this.

    This is what im using


    Sub parse_data()
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim icol As Long
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    vcol = 1
    Set ws = Sheets("sheet1")
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:AN1"
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 To lr
    On Error Resume Next
    If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
    ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
    End If
    Next
    myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
    ws.Columns(icol).Clear
    For i = 2 To UBound(myarr)
    ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
    If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
    Else
    Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
    End If
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    End Sub
  • To post as a guest, your comment is unpublished.
    avinash · 1 months ago
    Thanks for VBA, it works great. In addition to that question, I have column which is dependent. So when i select some value my column values get changed hence I need vba solution to replace earlier split worksheet to replace with new value of columns. Can anyone help me out.?

    Thanks in advance
  • To post as a guest, your comment is unpublished.
    JP Tontegode · 1 months ago
    Is there a way to have the macro create a separate spreadsheet for each new tab instead of just adding a tab into the current worksheet? Thanks!