As cookies axúdanos a entregar os nosos servizos. Ao usar os nosos servizos, acepta o noso uso das cookies.
Consello: outros idiomas están traducidos a Google. Podes visitar o English versión desta ligazón.
Iniciar sesión
x
or
x
x
Register
x

or

Como dividir os datos en varias follas de traballo en función da columna en Excel?

Supoñendo que tes unha folla de cálculo con enormes filas de datos e agora tes que dividir os datos en varias follas de traballo en función do nome columna (ver seguinte captura de pantalla), e os nomes introdúcense aleatoriamente. Quizais poida ordenalos primeiro e, a continuación, copialos e pegalos un a outro noutras novas follas de cálculo. Pero isto necesitará a túa paciencia para copiar e pegar varias veces. Hoxe falarei de algúns trucos rápidos para resolver esta tarefa.

doc dividir datos por columnas 1

Dividir datos en varias follas de traballo en función da columna con código VBA

Dividir datos en varias follas de cálculo baseadas na columna con Kutools para Excel


Dividir datos en varias follas de cálculo en base a un reconto específico de columnas ou filas na folla de cálculo:

Se desexa dividir unha folla de cálculo grande en varias follas baseadas en datos específicos de columnas ou contas de filas, o Kutools para Excel's Dividir datos O recurso pode axudarche a resolver esta tarefa con rapidez e facilidade.

doc dividir datos por columnas 6

Kutools para Excel: con máis de 200 complementos de Excel útiles, gratuítos para probar sen ningunha limitación en 60 días. Descarga e proba gratuíta Agora!


Dividir datos en varias follas de traballo en función da columna con código VBA


Se desexa dividir os datos en función do valor da columna de xeito rápido e automático, o seguinte código VBA é unha boa opción. Faga o seguinte:

1. Manteña o botón ALT + F11 chaves para abrir a Microsoft Visual Basic para aplicacións fiestra.

2. Prema Inserir > Módulos, e pegue o seguinte código na xanela do módulo.

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("Master sheet")        
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

Nota: No código anterior:

  • vcol = 1 , o número 1 é o número da columna que desexa dividir os datos en función de.
  • Establecer ws = Follas ("folla principal"), Folla mestra é o nome da folla que quere aplicar este código.
  • title = "A1: C1" , A1: C1 é o alcance do título.

Todas elas son variables, podes cambialas como a túa necesidade.

3. A continuación, preme F5 clave para executar o código, todos os datos da folla de traballo activa divídense en varias follas de traballo polo valor da columna. E as follas divididas son nomeadas cos nomes de celas divididas. Ver captura de pantalla:

doc dividir datos por columnas 2

Nota: As follas divididas colócanse ao final do libro onde está a folla de cálculo mestra.


Dividir datos en varias follas de cálculo baseadas na columna con Kutools para Excel

Como principiante de Excel, este longo código VBA é algo difícil para nós, ea maioría de nós aínda non sabemos como modificar o código como a nosa necesidade.

Aquí, vou presentarche unha ferramenta multifuncional.Kutools para Excel, o seu Dividir datos A utilidade non só pode axudar a dividir os datos en varias follas de traballo en función da columna, senón que tamén pode dividir os datos por reconto de filas.

Kutools para Excel : con máis de 300 complementos de Excel útiles, gratuítos para probar sen ningunha limitación nos días 60.

Se tes instalado Kutools para Excel, faga o seguinte:

1. Seleccione o intervalo de datos que desexa dividir.

2. Prema Kutools Máis > Folla > Dividir datos, ver captura de pantalla:

doc dividir datos por columnas 3

3. no Dividir datos en varias follas de traballo caixa de diálogo, necesitas:

1). Seleccionar Columna específica opción no Dividida en base a sección e escolla o valor da columna que desexe dividir os datos en función da lista despregábel. (Se os seus datos teñen cabeceiras e quere inserilos en cada nova folla dividida, verifique Os meus datos teñen cabeceiras opción.)

2). Entón pode especificar os nomes de follas de traballo divididas, debaixo da Nome de novas follas de cálculo sección, especifique as regras dos nomes da folla de traballo dende o Regras lista desplegable, pode engadir a Prefixo or sufixo para os nomes das follas tamén.

3). Faga clic na OK botón. Ver captura de pantalla:

doc dividir datos por columnas 4

4. Agora os datos divídense en varias follas de traballo nun novo caderno de traballo.

doc dividir datos por columnas 5

Fai clic para descargar Kutools para Excel e proba gratuíta agora.


Dividir datos en varias follas de cálculo baseadas na columna con Kutools para Excel

Kutools para Excel Inclúe máis ferramentas 300 útiles a man. Gratis para probar sen límite nos días 60. Descarga a versión de proba agora.


Artigo relacionado:

Como dividir os datos en varias follas de traballo por conta de filas?



Ferramentas de produtividade recomendadas

Tabulación de Office

estrela de ouro1 Traia páxinas útiles para Excel e outro software de Office, como Chrome, Firefox e Internet Explorer novo.

Kutools para Excel

estrela de ouro1 Sorprendente! Aumenta tu productividad en 5 minutos. Non necesitas habilidades especiais, garda dúas horas todos os días.

estrela de ouro1 300 Novidades para Excel, Excel moi fácil e poderoso:

  • Combina celas / filas / columnas sen perder datos.
  • Combina e consolida varias follas e libros de traballo.
  • Comparar intervalos, copiar varios intervalos, converter texto a data, conversión de unidade e moeda.
  • Conta por cores, subtotales de paginación, clasificación avanzada e filtro super,
  • Máis Seleccionar / Inserir / Eliminar / Texto / Formato / Ligazón / Comentario / Libros / Follas de ferramentas ...

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.
    pradeep sharma · 4 months ago
    I have used this VBA code, its split the data but split whole data in new sheet instead of unique value.
  • To post as a guest, your comment is unpublished.
    Pradeep Sharma · 4 months ago
    The VBA code split the data perfectly but its split the whole data instead of unique value.
  • To post as a guest, your comment is unpublished.
    Jorge Portillo · 4 months ago
    The codes works perfectly, only trouble is that it does not separate columns when the text is too long, I have text with 40 characters and I get an empty "sheet2", every other text gets sorted.


    Any ideas on how to fix it? I've already tried changin variable and placed them as Long, however I am not sure I fully understand the program. all this for the VBA option.
  • To post as a guest, your comment is unpublished.
    Manish · 5 months ago
    I need a macro for following condition
    suppose i have customer excel file in which first 7 rows is for header so, from 8th row records are start
    i need to split rows of 500 record each in one file and save them with name customer1,customer2,customer3,........
    suppose i have customer file of 2540 records so it split in
    customer1 which have header rows with record starts from 8th row to 507th row
    customer2 which have header rows with record starts from 508th row to 1007th row
    customer3 which have header rows with record starts from 1008th row to 1507th row
    customer4 which have header rows with record starts from 1508th row to 2007th row
    customer5 which have header rows with record starts from 2008th row to 2507th row
    customer6 which have header rows with record starts from 2508th row to 2540th row
    • To post as a guest, your comment is unpublished.
      parabola hiperbola · 10 days ago
      hi. I have similar situation, I want to keep first 8 rows in every sheet created. did you find any solution to this?
      • To post as a guest, your comment is unpublished.
        skyyang · 2 days ago
        Hi, guys,
        If your worksheet data contains multiple header rows, the below VBA code can solve your prolem, please try it.

        Sub Parse_data_0213()
        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

        Hope it can help you, thank you!
  • To post as a guest, your comment is unpublished.
    Dilusha · 5 months ago
    How can I get the Total of Column C for each sheets.?