Բաց թողնել հիմնական բովանդակությունը

Ինչպե՞ս Excel- ում սյունակի հիման վրա տվյալները բաժանել բազմաթիվ աշխատանքային թերթերի:

Ենթադրելով, որ դուք ունեք հսկայական տվյալների շարքերով աշխատաթերթ, և այժմ դուք պետք է բաժանեք տվյալները բազմաթիվ աշխատանքային թերթերի ՝ հիմնվելով Անուն սյունակ (տե՛ս հետևյալ նկարը), և անունները մուտքագրվում են պատահականորեն: Գուցե նախ կարող եք դրանք դասավորել, այնուհետև դրանք մեկ առ մեկ պատճենել և տեղադրել դրանք այլ նոր աշխատանքային թերթերում: Բայց դրա համար հարկավոր է ձեր համբերությունը ՝ բազմիցս պատճենելու և տեղադրելու համար: Այսօր ես կխոսեմ այս խնդիրը լուծելու մի քանի արագ հնարքների մասին:

փաստաթղթերի պառակտման տվյալները ըստ սյունակների 1-ի

Տվյալները բաժանեք բազմաթիվ աշխատանքային թերթերի ՝ հիմնված VBA կոդով սյունակի վրա

Excel- ի համար Kutools- ի հետ սյունակի հիման վրա տվյալների բաժանեք բազմակի աշխատաթերթերի


Տվյալները բաժանեք բազմաթիվ աշխատանքային թերթերի ՝ հիմնված VBA կոդով սյունակի վրա

Եթե ​​ցանկանում եք արագ և ինքնաբերաբար բաժանել սյունակի արժեքի վրա հիմնված տվյալները, հետևյալ VBA կոդը լավ ընտրություն է: Խնդրում եմ, արեք այսպես.

1, Պահեք պահեք ALT + F11 բացել ստեղները Microsoft Visual Basic հավելվածների համար պատուհան.

2: Սեղմեք Տեղադրել > Մոդուլներև տեղադրեք հետևյալ կոդը Մոդուլի պատուհանում:

Sub Splitdatabycol()
'updateby Extendoffice
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
Dim xWS 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
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.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, Հետո, սեղմեք F5 Կոդը գործարկելու համար ստեղնը, և հուշվում է արագ տուփ, որը հիշեցնում է ձեզ վերնագրի շարքը ընտրել, տե՛ս նկարը.

փաստաթղթերի պառակտման տվյալները ըստ սյունակների 7-ի

4, Եվ հետո, կտտացրեք OK կոճակը, և երկրորդ հուշման վանդակում խնդրում ենք ընտրել սյունակի տվյալները, որոնց հիման վրա ցանկանում եք բաժանել, տես նկարի նկարը.

փաստաթղթերի պառակտման տվյալները ըստ սյունակների 8-ի

5, Դրանից հետո կտտացրեք OK, և ակտիվ աշխատաթերթի բոլոր տվյալները սյունակի արժեքով բաժանվում են բազմաթիվ աշխատանքային թերթերի: Եվ պառակտված աշխատանքային թերթերն անվանում են պառակտված բջիջների անուններ: Տեսեք,

փաստաթղթերի պառակտման տվյալները ըստ սյունակների 2-ի

Նշում. Պառակտված աշխատաթերթերը տեղադրվում են աշխատանքային գրքի վերջում, որտեղ գտնվում է հիմնական աշխատանքային թերթը:


Excel- ի համար Kutools- ի հետ սյունակի հիման վրա տվյալների բաժանեք բազմակի աշխատաթերթերի

Որպես Excel սկսնակ, այս երկար VBA կոդը մեզ համար որոշ չափով դժվար է, և մեզանից շատերը նույնիսկ չգիտեն, թե ինչպես փոփոխել կոդը ՝ ըստ մեր կարիքի: Այստեղ ես կներկայացնեմ ձեզ բազմաֆունկցիոնալ գործիքExcel- ի համար նախատեսված գործիքներ, նրա Տրոհված տվյալներ կոմունալը ոչ միայն կարող է օգնել ձեզ տրոհել տվյալները սյունակի վրա հիմնված բազմաթիվ աշխատանքային թերթերի, այլ նաև կարող է բաժանել տվյալները տողերի հաշվարկի միջոցով:

Նշում:Սա կիրառելու համար Տրոհված տվյալներ, նախ, դուք պետք է ներբեռնեք այն Excel- ի համար նախատեսված գործիքներ, ապա գործառույթը կիրառեք արագ և հեշտությամբ:

Տեղադրելուց հետո Excel- ի համար նախատեսված գործիքներԽնդրում եմ արեք հետևյալ կերպ

1, Ընտրեք տվյալների շրջանակը, որը ցանկանում եք բաժանել:

2: Սեղմեք Kutools Plus > Աշխատանքային թերթիկ > Տրոհված տվյալներ, տես նկարի նկարը.

փաստաթղթերի պառակտման տվյալները ըստ սյունակների 3-ի

3, Մեջ Տվյալները բաժանեք մի քանի աշխատանքային թերթերի երկխոսության տուփ, անհրաժեշտ է.

1) Ընտրեք Հատուկ սյունակ տարբերակը Պառակտում ՝ հիմնված բաժինը և ընտրեք սյունակի արժեքը, որի վրա ցանկանում եք բաժանել տվյալները `հիմնվելով բացվող ցուցակում: (Եթե ձեր տվյալներն ունեն վերնագրեր, և ցանկանում եք դրանք տեղադրել յուրաքանչյուր նոր բաժանված աշխատանքային թերթում, խնդրում ենք ստուգել Իմ տվյալներն ունեն վերնագրեր տարբերակ):

2) Դրանից հետո կարող եք բաժանել բաժանված աշխատաթերթի անունները ՝ Նոր աշխատաթերթերի անվանում բաժնում, նշեք աշխատանքային թերթի անվանումների կանոնները Կանոններ բացվող ցուցակ, կարող եք ավելացնել Նախածանց or վերջածանց սավանի անունների համար նույնպես:

3) Սեղմիր OK կոճակ Տեսեք,

փաստաթղթերի պառակտման տվյալները ըստ սյունակների 4-ի

4, Այժմ տվյալները բաժանվում են բազմաթիվ աշխատանքային թերթերի նոր աշխատանքային գրքում:

փաստաթղթերի պառակտման տվյալները ըստ սյունակների 5-ի

Կտտացրեք Excel- ի և անվճար փորձաշրջանի համար Kutools- ը ներբեռնելու համար:


Excel- ի համար Kutools- ի հետ սյունակի հիման վրա տվյալների բաժանեք բազմակի աշխատաթերթերի

Excel- ի համար նախատեսված գործիքներ ներառում է ավելի քան 300 հարմար Excel գործիքներ: Փորձեք առանց սահմանափակումների 30 օրվա ընթացքում: Ներբեռնեք անվճար փորձն այժմ:


Առնչվող հոդված:

Ինչպե՞ս բաժանել տվյալները բազմակի աշխատանքային թերթերի ըստ տողերի հաշվարկի:

Գրասենյակի արտադրողականության լավագույն գործիքները

🤖 Kutools AI օգնականՀեղափոխություն կատարել տվյալների վերլուծության հիման վրա՝ Խելացի կատարում   |  Ստեղծեք ծածկագիր  |  Ստեղծեք հատուկ բանաձևեր  |  Վերլուծել տվյալները և ստեղծել գծապատկերներ  |  Invoke Kutools-ի գործառույթները...
Հանրաճանաչ հատկություններ: Գտեք, ընդգծեք կամ նույնականացրեք կրկնօրինակները   |  Deleteնջել դատարկ շարքերը   |  Միավորել սյունակները կամ բջիջները՝ առանց տվյալների կորստի   |   Կլոր առանց բանաձևի ...
Super Փնտրել: Բազմաթիվ չափանիշների VLookup    Բազմակի արժեք VLookup  |   VLookup բազմաթիվ թերթերում   |   Fuzzy Փնտրել ....
Ընդլայնված բացվող ցուցակ: Արագ ստեղծեք բացվող ցուցակը   |  Կախված բացվող ցուցակ   |  Բազմակի ընտրություն Drop Down ցուցակ ....
Սյունակի կառավարիչ: Ավելացրեք որոշակի քանակությամբ սյունակներ  |  Տեղափոխել սյունակները  |  Փոխարկել թաքնված սյունակների տեսանելիության կարգավիճակը  |  Համեմատեք միջակայքերը և սյունակները ...
Առանձնահատկություններ: Ցանցի կենտրոնացում   |  Դիզայնի տեսք   |   Մեծ Formula Bar    Աշխատանքային գրքույկի և թերթիկների կառավարիչ   |  Ռեսուրսների գրադարան (Ավտոմատ տեքստ)   |  Ամսաթիվ ընտրող   |  Միավորել աշխատանքային թերթերը   |  Գաղտնագրել/գաղտնազերծել բջիջները    Ուղարկեք նամակներ ըստ ցանկի   |  Սուպեր զտիչ   |   Հատուկ զտիչ (զտել թավ/շեղ/շեղված...) ...
Լավագույն 15 գործիքների հավաքածու12 Տեքստ Գործիքներ (Ավելացրեք տեքստ, Հեռացնել նիշերը, ...)   |   50+ Աղյուսակ Տեսակներ (Գանտի աղյուսակը, ...)   |   40+ Գործնական Բանաձեւեր (Հաշվարկել տարիքը ՝ ելնելով ծննդյան տարեդարձից, ...)   |   19 միացում Գործիքներ (Տեղադրեք QR կոդ, Տեղադրեք նկար ուղուց, ...)   |   12 Փոխարկում Գործիքներ (Բառեր համարներ, Արտարժույթի փոխակերպումը, ...)   |   7 Միաձուլում և պառակտում Գործիքներ (Ընդլայնված կոմբինատ տողեր, Պառակտված բջիջներ, ...)   |   ... եւ ավելին

Լրացրեք ձեր Excel-ի հմտությունները Kutools-ի հետ Excel-ի համար և փորձեք արդյունավետությունը, ինչպես երբեք: Kutools-ը Excel-ի համար առաջարկում է ավելի քան 300 առաջադեմ առանձնահատկություններ՝ արտադրողականությունը բարձրացնելու և ժամանակ խնայելու համար:  Սեղմեք այստեղ՝ Ձեզ ամենաշատ անհրաժեշտ հատկանիշը ստանալու համար...

Նկարագրություն


Office Tab- ը Tabbed ինտերֆեյսը բերում է Office, և ձեր աշխատանքը շատ ավելի դյուրին դարձրեք

  • Միացնել ներդիրներով խմբագրումը և ընթերցումը Word, Excel, PowerPoint- ով, Հրատարակիչ, Access, Visio և Project:
  • Բացեք և ստեղծեք բազմաթիվ փաստաթղթեր նույն պատուհանի նոր ներդիրներում, այլ ոչ թե նոր պատուհաններում:
  • Բարձրացնում է ձեր արտադրողականությունը 50%-ով և նվազեցնում մկնիկի հարյուրավոր սեղմումները ձեզ համար ամեն օր:
Comments (312)
Rated 5 out of 5 · 2 ratings
This comment was minimized by the moderator on the site
Sub SplitDataByColWorkbook()
Dim lr As Long
Dim ws As Worksheet
Dim vcol 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
Dim xWS As Workbook
Dim wb As Workbook


Set wb = ThisWorkbook
Set ws = wb.Sheets(1) ' Assuming you want to work with the first sheet in the workbook

On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Select Header Rows", Type:=8)
If xTRg Is Nothing Then Exit Sub

On Error Resume Next
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Select Split Column", Type:=8)
If xVRg Is Nothing Then Exit Sub

vcol = xVRg.Column
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
Set xWS = Workbooks.Add
Else
Set xWS = Workbooks.Add
End If

Set xWSTRg = xWS.Sheets(1)
xTRg.Copy
xWSTRg.Range("A1").PasteSpecial Paste:=xlPasteValues
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) & ""
Set xWS = Workbooks.Add
Set xWSTRg = xWS.Sheets(1)
xTRg.Copy
xWSTRg.Range("A1").PasteSpecial Paste:=xlPasteValues
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWSTRg.Range("A" & (titlerow + xTRg.Rows.Count))
xWSTRg.Columns.AutoFit
xWS.SaveAs myarr(i) & ".xlsx" ' Change the file name as needed
xWS.Close SaveChanges:=False
Next

ws.AutoFilterMode = False
wb.Activate
Application.DisplayAlerts = True
End Sub
This comment was minimized by the moderator on the site
First of all, thank you for the macro.

I would like to ask if there is any way to maintain the column widths. My 'original' tab was completely formatted. However, after running the macro, it loses the column formatting and appears quite messy.

English is not my first language (sorry).

Thank you again!
Rated 5 out of 5
This comment was minimized by the moderator on the site
The original header is not copied in the split sheet.
This comment was minimized by the moderator on the site
This works wonderfully, thank you very much!!! Huge time-saver.
Rated 5 out of 5
This comment was minimized by the moderator on the site
Hello,

I am having a hard time getting this code to work. When I run it, it just creates a duplicate sheet and does not split columns into multiple sheets.

I do have values that exceed 31 characters as well as special characters such as "-" and "()" in my column, how can I account for that without a lot of manual changes?
This comment was minimized by the moderator on the site
This worked great!!! One question... my formulas didn't transfer to each sheet correctly. What do I need to do differently to transfer the formulas?
Thank you!!!!!
This comment was minimized by the moderator on the site
Nice code, but it just copied everything to the new tables, named correctly though. So, the data filtering did not work at all, just copy paste.
This comment was minimized by the moderator on the site
When I run this using a small amount of data like the example it works. I'm trying to use this on a database with 400k + rows of data. When I run the macro, a second tab is created with just the header row and no data.
This comment was minimized by the moderator on the site
Hello, Ryan,

As you mentioned, the code works well for small data ranges, if there are lots of data, the code will not work properly.
In such situations, I recommend using the "Split Data" feature offered by Kutools for Excel. This powerful feature can greatly assist you in managing large amounts of data. To take advantage of this feature, you can download and install Kutools for Excel, which is available for a 30-day free trial.

Please have a try, thank you!
This comment was minimized by the moderator on the site
I've come across many solutions in VBA message boards for parsing data into worksheets or columns based upon filtering a particular column, but they all require a bit of tinkering and customization. What makes this so brilliant is that it is dynamic, user-friendly even for beginners (which gives it shareable utility), and copy/paste ready.

You rock.
This comment was minimized by the moderator on the site
Hi, Dane,
Thanks for your comment, glad this can help you! Have a good day!
This comment was minimized by the moderator on the site
When I try to split data from a different sheet, it copies and pastes the entire sheet into one sheet instead of multiple sheets. Could this be because the naming convention of the sheet I'm trying to split is similar to another sheet?
This comment was minimized by the moderator on the site
Hello, Giancarlo,

If the data in the column is same with a sheet name in the workbook, the sheet with the same name will be kept, other data will be split into separate sheet.
Thanks for your comment.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations