Kolačići nam pomoći isporučiti naše usluge. Korištenjem naših usluga, pristajete na naše korištenje kolačića.
Savjet: drugi jezici su prevedeni na Google. Možete posjetiti English verzija ove veze.
Prijaviti se
x
or
x
x
Registrirajte se
x

or

Kako podijeliti podatke na više radnih listova na temelju stupca u programu Excel?

Pretpostavimo da imate radni list s ogromnim brojem podataka, a sada morate podijeliti podatke na više radnih listova na temelju Ime (pogledajte sljedeću snimku zaslona), a imena se unose slučajnim redoslijedom. Možda ih najprije možete razvrstati, a zatim kopirajte i zalijepite jedan po jedan u druge nove listove. No, to će vam trebati strpljenje za kopiranje i lijepljenje više puta. Danas ću govoriti o nekim brzim trikovima za rješavanje ovog zadatka.

doc podijeli podatke prema stupcima 1

Split podataka u više radnih listova na temelju stupca s VBA kodom

Split podataka u više listova na temelju stupca s Kutools za Excel


Split podataka u više radnih listova na temelju određenog stupca ili redaka broje u radnom listu:

Ako želite podijeliti veliki radni list u više listova na temelju određenih podataka stupaca ili brojeva redaka, Kutools za Excel's Podijeli podatke značajka vam može pomoći da brzo i jednostavno riješite taj zadatak.

doc podijeli podatke prema stupcima 6

Kutools za Excel: s više od 200 zgodnih Excel dodataka, slobodan pokušati bez ograničenja u 60 dana. Preuzmite i besplatno testiranje odmah!


Split podataka u više radnih listova na temelju stupca s VBA kodom


Ako želite podijeliti podatke na temelju vrijednosti stupca brzo i automatski, sljedeći VBA kôd je dobar izbor. Učinite sljedeće:

1, Držite pritisnuto ALT + F11 tipke za otvaranje Microsoft Visual Basic for Applications prozor.

2, Klik umetak > Moduli, i zalijepite sljedeći kod u prozor modula.

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, Zatim pritisnite F5 da biste pokrenuli kôd, a okvir za upit prikazan je da bi vas podsjetio da odaberete redak zaglavlja, pogledajte screenshot:

doc podijeli podatke prema stupcima 7

4, A zatim, kliknite OK , a zatim u drugom okviru za prompt odaberite podatke stupca koje želite podijeliti na temelju, pogledajte snimku zaslona:

doc podijeli podatke prema stupcima 8

5, Zatim kliknite OK, a svi podaci u aktivnom radnom listu podijeljeni su na više radnih listova prema vrijednosti stupca. I podijeljeni radni listovi su imenovani s imenima podijeljenih stanica. Pogledajte snimku zaslona:

doc podijeli podatke prema stupcima 2

bilješke: Dijeljeni radni listovi nalaze se na kraju radne knjige u kojoj se nalazi glavni radni list.


Split podataka u više listova na temelju stupca s Kutools za Excel

Kao Excel početnik, ovaj dugi VBA kod nam je pomalo težak, a većina nas čak i ne zna kako izmijeniti kôd kao našu potrebu.

Ovdje ću vam predstaviti višenamjenski alat -Kutools za Excel, svojim Podijeli podatke korisni programi ne samo da vam mogu pomoći podijeliti podatke na više listova temeljenih na stupcu, već i podijeliti podatke po brojanju redaka.

Kutools za Excel : s više od 300 zgodnih Excel dodataka, slobodan pokušati bez ograničenja u 60 dana.

Ako ste ga instalirali Kutools za Excel, učinite sljedeće:

1, Odaberite raspon podataka koje želite podijeliti.

2, Klik Kutools Više > Radni list > Podijeli podatke, pogledajte snimak zaslona:

doc podijeli podatke prema stupcima 3

3. U Split podataka u više radnih listova dijaloški okvir, morate:

1). Izaberi Određeni stupac opcija u Na temelju Splita odjeljak, a zatim odaberite vrijednost stupca koju želite podijeliti na temelju padajućeg popisa. (Ako vaši podaci imaju zaglavlja i želite ih umetnuti u svaki novi radni list, provjerite Moji podaci imaju zaglavlja opcija.)

2). Zatim možete odrediti nazive split radnih listova, ispod Naziv novog radnog lista odjeljak, navedite pravila naziva radnog lista od Pravila padajući popis, možete dodati Prefiks or Sufiks za nazive listova.

3). Kliknite gumb OK dugme. Pogledajte snimak zaslona:

doc podijeli podatke prema stupcima 4

4, Sad su podaci podijeljeni u više radnih listova u novoj radnoj knjizi.

doc podijeli podatke prema stupcima 5

Kliknite da biste preuzeli Kutools za Excel i besplatnu probnu verziju odmah!


Split podataka u više listova na temelju stupca s Kutools za Excel

Kutools za Excel uključuje više od 300 zgodan Excel alata. Slobodno je pokušati bez ograničenja u 60 danima. Preuzmite besplatnu probnu verziju sada!


Povezani članak:

Kako podijeliti podatke na više listova brojevima?



Preporučeni alati za produktivnost

Kartica sustava Office

zlato star1 Donesite praktične kartice u program Excel i drugi Office, kao što su Chrome, Firefox i novi Internet Explorer.

Kutools za Excel

zlato star1 Nevjerojatno! Povećajte produktivnost u 5 minuta. Ne trebaju nikakve posebne vještine, osim dva sata svaki dan!

zlato star1 300 nove značajke za Excel, izraditi Excel mnogo jednostavan i snažan:

  • Spoji ćeliju / retke / stupce bez gubitka podataka.
  • Kombinirajte i konsolidirajte više tablica i radnih knjiga.
  • Usporedba raspona, kopiranje više raspona, pretvaranje teksta na datum, jedinica i pretvorba valuta.
  • Count po bojama, Paging Subtotal, Advanced Sort i Super Filter,
  • Više Odabir / umetanje / brisanje / tekst / oblikovanje / veza / komentar / radne knjige / alati za radne listove ...

Screen shot tvrtke Kutools za 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 · 9 hours 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!