Skip to main content

Leideanna Excel: Roinn sonraí i mbileoga oibre / leabhair oibre iolracha bunaithe ar luach colún

Údar: Xiaoyang Athraithe Deiridh: 2024-04-26

Nuair a bhíonn tacair shonraí móra á mbainistiú in Excel, is féidir go mbeadh sé an-tairbheach sonraí a roinnt ina il-bhileoga oibre bunaithe ar luachanna colúin ar leith. Feabhsaíonn an modh seo ní hamháin eagrú sonraí ach feabhsaíonn sé inléiteacht agus éascaíonn sé anailís sonraí níos éasca.

Cuir i gcás go bhfuil taifead díolacháin mór agat ina bhfuil iliontrálacha cosúil le hainm an táirge, an chainníocht a díoladh sa chéad ráithe. Is é an sprioc ná na sonraí seo a roinnt i mbileoga oibre ar leith bunaithe ar gach ainm táirge ionas gur féidir anailís a dhéanamh ar fheidhmíocht díolacháin aonair ar leithligh.

Roinn sonraí i mbileoga oibre iolracha bunaithe ar luach colúin

Roinn sonraí i leabhair oibre iolracha bunaithe ar luach colún le cód VBA


Roinn sonraí i mbileoga oibre iolracha bunaithe ar luach colúin

De ghnáth, is féidir leat an liosta sonraí a shórtáil ar dtús, agus ansin iad a chóipeáil agus a ghreamú ceann ar cheann i mbileoga oibre nua eile. Ach beidh ort do foighne a chóipeáil agus a ghreamú arís agus arís eile. Sa chuid seo, tabharfaimid isteach dhá mhodh simplí chun dul i ngleic go héifeachtach leis an tasc seo in Excel, rud a shábháil am duit agus an fhéidearthacht earráidí a laghdú.

Roinn sonraí i mbileoga oibre iolracha bunaithe ar luach colún le cód VBA

1. Coinnigh síos an ALT + F11 eochracha a oscailt Microsoft Visual Basic d’Fheidhmchláir fhuinneog.

2. cliceáil Ionsáigh > Modúil, agus greamaigh an cód seo a leanas i bhFuinneog an Mhodúil.

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. Ansin, brúigh F5 eochair chun an cód a rith, agus cuirtear bosca leid amach chun a mheabhrú duit an tsraith ceanntásc a roghnú, agus ansin, cliceáil OK. Féach an pictiúr:

4. Sa dara bosca pras, roghnaigh na sonraí colún ar mhaith leat a scoilt bunaithe ar, ansin, cliceáil OK. Féach an pictiúr:

5. Tá na sonraí go léir sa bhileog oibre gníomhach roinnte ina il-bhileoga oibre bunaithe ar na luachanna colún. Ainmnítear na bileoga oibre a eascraíonn as seo de réir na luachanna sna cealla scoilte agus cuirtear iad ag deireadh an leabhair oibre. Féach ar an scáileán:

 

Roinn sonraí i mbileoga oibre iolracha bunaithe ar luach colún le Kutools le haghaidh Excel

Kutools le haghaidh Excel Tugann gné cliste - Scoilt Sonraí díreach isteach i do thimpeallacht Excel. Ní dúshlán a thuilleadh é sonraí a roinnt ina ilbhileoga oibre. Roinneann ár n-uirlis iomasach do thacair sonraí go huathoibríoch bunaithe ar luach an cholúin roghnaithe nó ar chomhaireamh na sraitheanna, ag cinntiú go bhfuil gach píosa faisnéise díreach san áit a dteastaíonn sé uait. Slán a fhágáil leis an tasc tedious a bhaineann le do scarbhileoga a eagrú de láimh agus glacadh le bealach níos tapúla, saor ó earráidí chun do shonraí a bhainistiú.

nótaí: Chun é seo a chur i bhfeidhm Scoilt Sonraí, ar dtús, ba cheart duit an Kutools le haghaidh Excel, agus ansin an ghné a chur i bhfeidhm go tapa agus go héasca.

Tar éis a shuiteáil Kutools le haghaidh Excel, roghnaigh an raon sonraí, agus ansin cliceáil Kutools Plus > Scoilt Sonraí a oscailt Roinn na sonraí i mbileoga oibre iolracha dialóg.

  1. Roghnaigh Colún sonrach rogha sa Scoilt bunaithe ar alt seo, agus roghnaigh an luach colún ar mian leat na sonraí a roinnt bunaithe ar an liosta anuas.
  2. Má tá ceanntásca ag do shonraí agus gur mhaith leat iad a chur isteach i ngach bileog oibre scoilte nua, seiceáil le do thoil Tá ceanntásca ar mo chuid sonraí rogha. (Is féidir leat líon na sraitheanna ceanntásc a shonrú bunaithe ar do shonraí. Mar shampla, má tá dhá cheanntásc i do shonraí, clóscríobh 2 le do thoil.)
  3. Ansin is féidir leat ainmneacha na mbileog oibre scoilte a shonrú, faoin Ainm bileoga oibre nua alt, sonraigh an riail ainmneacha bileog oibre ón liosta anuas Rialacha, is féidir leat an Réimse or Iarmhír le haghaidh ainmneacha na mbileog freisin.
  4. Cliceáil ar an OK cnaipe. Féach an pictiúr:

Anois, roinntear na sonraí sa bhileog oibre i mbileoga oibre iolracha i leabhar oibre nua.


Roinn sonraí i leabhair oibre iolracha bunaithe ar luach colún le cód VBA

Ó am go chéile, seachas sonraí a roinnt i mbileoga oibre iolracha, b’fhéidir go mbeadh sé níos tairbhí na sonraí a roinnt ina leabhair oibre ar leith bunaithe ar eochaircholún. Seo treoir céim ar chéim ar conas cód VBA a úsáid chun an próiseas roinnte sonraí a uathoibriú i leabhair oibre iolracha bunaithe ar luach colún ar leith.

1. Coinnigh síos an ALT + F11 eochracha a oscailt Microsoft Visual Basic d’Fheidhmchláir fhuinneog.

2. cliceáil Ionsáigh > Modúil, agus greamaigh an cód seo a leanas sa Fuinneog an Mhodúil.

Sub SplitDataByColToWorkbooks()
    ' Updateby Extendoffice
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    Dim xTRg As Range
    Dim xVRg As Range
    Dim xWS As Workbook
    Dim savePath As String
    ' Set the directory to save new workbooks
    savePath = "C:\Users\AddinsVM001\Desktop\multiple files\" ' Modify this path as needed
    Application.DisplayAlerts = False
    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.Address(False, False)
    titlerow = xTRg.Row
    ws.Columns(vcol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws.Cells(1, ws.Columns.Count), Unique:=True
    myarr = Application.Transpose(ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).Value)
    ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).ClearContents
    For i = 2 To UBound(myarr)
        Set xWS = Workbooks.Add
        ws.Range(title).AutoFilter Field:=vcol, Criteria1:=myarr(i)
        ws.Range("A" & titlerow & ":A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Copy
        xWS.Sheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteAll
        xWS.SaveAs Filename:=savePath & myarr(i) & ".xlsx"

        xWS.Close SaveChanges:=False
    Next i
    ws.AutoFilterMode = False
    Application.DisplayAlerts = True
    ws.Activate
End Sub
nótaí: Sa chód thuas, ba chóir duit an cosán comhaid a athrú chuig do chuid féin, áit a sábhálfar na leabhair oibre scoilte sa script seo: savePath = "C:\Users\AddinsVM001\Desktop\ilcomhaid\".

3. Ansin, brúigh F5 eochair chun an cód a rith, agus cuirtear bosca leid amach chun a mheabhrú duit an tsraith ceanntásc a roghnú, agus ansin, cliceáil OK. Féach an pictiúr:

4. Sa dara bosca pras, roghnaigh na sonraí colún ar mhaith leat a scoilt bunaithe ar, ansin, cliceáil OK. Féach an pictiúr:

5. Tar éis scoilteadh, roinntear na sonraí go léir sa bhileog oibre gníomhach i leabhair oibre iolracha bunaithe ar na luachanna colún. Sábháiltear na leabhair oibre scoilte go léir san fhillteán a shonraigh tú. Féach ar an scáileán:

Airteagail ghaolmhara:

  • Roinn sonraí i mbileoga oibre iomadúla de réir chomhaireamh na sraitheanna
  • Má dhéantar raon mór sonraí a roinnt go héifeachtach i mbileoga oibre iolracha Excel bunaithe ar chomhaireamh ró ar leith, is féidir bainistíocht sonraí a shruthlíniú. Mar shampla, má scartar tacar sonraí gach 5 shraith ina ilbhileoga is féidir é a dhéanamh níos soláimhsithe agus níos eagraithe. Tugann an treoir seo dhá mhodh praiticiúla chun an tasc seo a chur i gcrích go tapa agus go héasca.
  • Cumaisc dhá thábla nó níos mó i gceann amháin bunaithe ar eochaircholúin
  • Má cheaptar go bhfuil trí thábla agat i leabhar oibre, anois, ba mhaith leat na táblaí seo a chumasc in aon tábla amháin bunaithe ar na príomhcholúin chomhfhreagracha chun an toradh a fháil mar a thaispeántar thíos. B’fhéidir gur tasc trioblóideach é seo don chuid is mó dínn, ach, ná bíodh imní ort, san alt seo, tabharfaidh mé isteach roinnt modhanna chun an fhadhb seo a réiteach.
  • Roinn Teaghráin Téacs de réir Teorainneora i Sraitheanna Iolracha
  • De ghnáth, is féidir leat an ghné Téacs go Colún a úsáid chun inneachar cille a roinnt ina ilcholúin trí theorainneacha ar leith, mar shampla camóg, ponc, leathstad, slais, etc. agus na sonraí ó cholúin eile a athdhéanamh mar a thaispeántar an scáileán thíos. An bhfuil aon bhealaí maithe agat chun déileáil leis an tasc seo in Excel? Tabharfaidh an teagasc seo isteach roinnt modhanna éifeachtacha chun an post seo a chríochnú in Excel.
  • Roinn inneachar na gceall illíne ina sraitheanna/colúin scartha
  • Más rud é go bhfuil ábhar cille illíne agat atá scartha le Alt + Enter, agus anois is gá duit an t-ábhar illíne a roinnt go sraitheanna nó colúin scartha, cad is féidir leat a dhéanamh? San ealaín seo, foghlaimeoidh tú conas inneachar cille illíne a roinnt go tapa i sraitheanna nó i gcolúin scartha.

Uirlisí Táirgiúlachta Oifige is Fearr

🤖 Kutools AI Aide: anailís sonraí a réabhlóidiú bunaithe ar: Forghníomhú Chliste   |  Gin Cód  |  Cruthaigh Foirmlí Saincheaptha  |  Anailís a dhéanamh ar Sonraí agus Cairteacha a Ghin  |  Feidhmeanna Kutools a agairt...
Gnéithe Coitianta: Faigh, Aibhsigh nó Aithnigh Dúblaigh   |  Scrios Sraitheanna Bána   |  Comhcheangail Colúin nó Cealla gan Sonraí a Chailleadh   |   Babhta gan Foirmle ...
Cuardaigh Super: Ilchritéir VLookup    VLookup Illuachanna  |   VLookup Trasna Ilbhileoga   |   Amharc doiléir ....
Liosta anuas Casta: Go tapa Cruthaigh Liosta Anuas   |  Liosta anuas Cleithiúnach   |  Liosta Buail Isteach Ilroghnacha ....
Bainisteoir Colún: Cuir Líon Sonrach Colún leis  |  Colúin Bog  |  Scoránaigh Stádas Infheictheachta na gColún Ceilte  |  Déan comparáid idir Raonta & Colúin ...
Gnéithe Réadmhaoin: Fócas Eangaí   |  Amharc Dearaidh   |   Barra Mór na Foirmle    Leabhar Oibre & Bainisteoir Bileog   |  Leabharlann Acmhainní (Uaththéacs)   |  Piocálaí Dáta   |  Comhcheangail Bileoga Oibre   |  Criptigh/Díchriptigh Cealla    Seol Ríomhphost trí Liosta   |  Scagaire Super   |   Scagaire Speisialta (scagaire trom/iodálach/stailc tríd...) ...
Barr 15 Uirlisí12 Téacs uirlisí (Cuir Téacs, Bain Carachtair,...)   |   50 + Cairt cineálacha (Cairt Gantt,...)   |   40+ Praiticiúil Foirmlí (Ríomh aois bunaithe ar lá breithe,...)   |   19 Insertion uirlisí (Cuir isteach Cód QR, Ionsáigh Pictiúr ón gCosán,...)   |   12 Tiontú uirlisí (Uimhreacha le Focail, Comhshó Airgeadra,...)   |   7 Cumaisc & Scoilt uirlisí (Sraitheanna Comhcheangail Casta, Cealla Scoilt,...)   |   ... agus eile

Supercharge Do Scileanna Excel le Kutools le haghaidh Excel, agus Éifeachtúlacht Taithí Cosúil Ná Roimhe. Kutools le haghaidh Excel Tairiscintí Níos mó ná 300 Ardghnéithe chun Táirgiúlacht a Treisiú agus Sábháil Am.  Cliceáil anseo chun an ghné is mó a theastaíonn uait a fháil ...

Tuairisc


Tugann Tab Oifige comhéadan Tabbed chuig Office, agus Déan Do Obair i bhfad Níos Éasca

  • Cumasaigh eagarthóireacht agus léamh tabbed i Word, Excel, PowerPoint, Foilsitheoir, Rochtain, Visio agus Tionscadal.
  • Oscail agus cruthaigh cáipéisí iolracha i gcluaisíní nua den fhuinneog chéanna, seachas i bhfuinneoga nua.
  • Méadaíonn do tháirgiúlacht 50%, agus laghdaíonn sé na céadta cad a tharlaíonn nuair luch duit gach lá!
Comments (314)
Rated 5 out of 5 · 2 ratings
This comment was minimized by the moderator on the site
Hi,
is it possible to use a VBA code to split data into multiple files - not just tabs?
This comment was minimized by the moderator on the site
Hello, Emily,
To split data into multiple files, please apply the code in the second header of this article.
https://www.extendoffice.com/documents/excel/1174-excel-split-data-into-multiple-worksheets-based-on-column.html#a2
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!
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