Wskazówka: inne języki są tłumaczone przez Google. Możesz odwiedzić English wersja tego linku.
Zaloguj Się
x
or
x
x
Zarejestruj
x

or

Jak podzielić dane na wiele arkuszy na podstawie kolumny w programie Excel?

Przypuśćmy, że masz arkusz roboczy z ogromnymi rzędami danych, a teraz musisz podzielić dane na wiele arkuszy roboczych na podstawie nazwa kolumnę (patrz poniższy zrzut ekranu), a nazwy są wprowadzane losowo. Może najpierw możesz je posortować, a następnie skopiować i wkleić jeden po drugim do innych nowych arkuszy. Ale będzie to wymagało Twojej cierpliwości do wielokrotnego kopiowania i wklejania. Dzisiaj porozmawiam o szybkich krokach, aby rozwiązać to zadanie.

doc podzielić dane według kolumn 1

Podziel dane na wiele arkuszy na podstawie kolumny z kodem VBA

Podziel dane na wiele arkuszy na podstawie kolumny z Kutools for Excel


Podziel dane na wiele arkuszy roboczych na podstawie określonej kolumny lub wierszy w arkuszu kalkulacyjnym:

Jeśli chcesz podzielić duży arkusz na wiele arkuszy w oparciu o dane konkretnej kolumny lub liczby wierszy, to Kutools dla programu Excel's Podziel dane funkcja może pomóc szybko i łatwo rozwiązać to zadanie.

doc podzielić dane według kolumn 6

Kutools dla programu Excel: z więcej niż 200 poręcznymi dodatkami do Excela, możesz wypróbować bez ograniczeń w 60 dniach. Pobierz i bezpłatnie wersję próbną!


Podziel dane na wiele arkuszy na podstawie kolumny z kodem VBA


Jeśli chcesz szybko i automatycznie podzielić dane w oparciu o wartość kolumny, dobrym wyborem będzie poniższy kod VBA. Zrób tak:

1. Przytrzymaj przycisk ALT + F11 klawisze, aby otworzyć Microsoft Visual Basic for Applications okno.

2, Kliknij wstawka > Modułi wklej następujący kod w oknie modułu.

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. Następnie naciśnij F5 klawisz, aby uruchomić kod, a pojawi się okno zachęty, aby przypomnieć o wyborze wiersza nagłówka, patrz zrzut ekranu:

doc podzielić dane według kolumn 7

4. A następnie kliknij OK W drugim polu zachęty wybierz dane kolumny, które chcesz podzielić na podstawie, zobacz zrzut ekranu:

doc podzielić dane według kolumn 8

5. Następnie kliknij OK, a wszystkie dane w aktywnym arkuszu roboczym są dzielone na wiele arkuszy roboczych według wartości kolumny. Podział arkuszy jest nazwany z nazwami podzielonych komórek. Zobacz zrzut ekranu:

doc podzielić dane według kolumn 2

Uwagi: Podział arkuszy roboczych znajduje się na końcu skoroszytu, w którym znajduje się główny arkusz roboczy.


Podziel dane na wiele arkuszy na podstawie kolumny z Kutools for Excel

Jako początkujący program Excel ten długi kod VBA jest dla nas nieco trudny, a większość z nas nawet nie wie, jak zmodyfikować kod jako nasze potrzeby.

Tutaj przedstawię Wam wielofunkcyjne narzędzie--Kutools dla programu Excel, jego Podziel dane narzędzie nie tylko może pomóc w dzieleniu danych na wiele arkuszy na podstawie kolumny, ale może również dzielić dane według liczby wierszy.

Kutools dla programu Excel : z więcej niż 300 poręcznymi dodatkami do Excela, za darmo możesz wypróbować bez ograniczeń w 60 dniach.

Jeśli masz zainstalowany Kutools dla programu Excel, wykonaj następujące czynności:

1. Wybierz zakres danych, które chcesz podzielić.

2, Kliknij Kutools Plus > Ćwiczenie > Podziel dane, zobacz zrzut ekranu:

doc podzielić dane według kolumn 3

3, w Podziel dane na wiele arkuszy w oknie dialogowym, musisz:

1). Wybierz Określona kolumna opcja w Podziel na podstawie i wybierz wartość kolumny, którą chcesz podzielić dane w oparciu o listę rozwijaną. (Jeśli twoje dane mają nagłówki i chcesz wstawić je do każdego nowego podzielonego arkusza, sprawdź Moje dane mają nagłówki opcja.)

2). Następnie możesz podać nazwy podzielonego arkusza roboczego, pod nazwą Nowa nazwa arkusza roboczego sekcja, określ reguły nazw arkuszy roboczych z Zasady rozwijana lista, możesz dodać Prefiks or Przyrostek także dla nazw arkuszy.

3). Kliknij OK przycisk. Zobacz zrzut ekranu:

doc podzielić dane według kolumn 4

4. Teraz dane są dzielone na wiele arkuszy w nowym skoroszycie.

doc podzielić dane według kolumn 5

Kliknij, aby pobrać Kutools dla programu Excel i bezpłatną wersję próbną teraz!


Podziel dane na wiele arkuszy na podstawie kolumny z Kutools for Excel

Kutools dla programu Excel zawiera więcej niż 300 poręcznych narzędzi Excel. Darmowe, aby spróbować bez ograniczeń w 60 dni. Pobierz bezpłatną wersję próbną już teraz!


Podobne artykuły:

Jak podzielić dane na wiele arkuszy roboczych według liczby wierszy?



Zalecane narzędzia zwiększające wydajność

Karta Office

złota star1 Przynieś poręczne zakładki do Excela i innego oprogramowania Office, tak jak Chrome, Firefox i nowy Internet Explorer.

Kutools dla programu Excel

złota star1 Niesamowity! Zwiększ swoją produktywność za 5 minut. Nie potrzebujesz żadnych specjalnych umiejętności, oszczędzając dwie godziny dziennie!

złota star1 300 Nowe funkcje programu Excel, uczynienie z Excela bardzo prostym i wydajnym:

  • Scal komórki / wiersze / kolumny bez utraty danych.
  • Łącz i konsoliduj wiele arkuszy i zeszytów.
  • Porównaj zakresy, skopiuj wiele zakresów, przelicz tekst na datę, jednostkę i walutę.
  • Zliczaj według kolorów, podstrony stronicowania, sortowanie zaawansowane i super filtry,
  • Więcej Wybierz / Wstaw / Usuń / Tekst / Format / Link / Komentarz / Skoroszyty / Arkusze zadań Narzędzia ...

Zrzut ekranu z Kutools dla Excela

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 · 5 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 · 5 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 · 6 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 · 1 months 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 · 1 months 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 · 6 months ago
    How can I get the Total of Column C for each sheets.?
  • To post as a guest, your comment is unpublished.
    Joshua · 6 months ago
    This is making new, labeled sheets for everything from my selected column, but it's not actually moving any of the associated data into the new sheets. What am I missing?
    • To post as a guest, your comment is unpublished.
      skyyang · 6 months ago
      Hello, Joshua,
      When applying the above code, you should change the references to your need, and this code is not applied correctly if your key column is date column, we will update a new code later.