Skip i'r prif gynnwys

Sut i rannu tabl mawr yn dablau bach lluosog yn Excel?

Awdur: Xiaoyang Wedi'i Addasu Diwethaf: 2022-07-14

Os oes gennych daflen waith fawr sy'n cynnwys nifer o golofnau a channoedd neu filoedd o ddata rhesi, nawr, rydych chi am rannu'r tabl mawr hwn yn dablau bach lluosog yn seiliedig ar werth y golofn neu nifer y rhesi i gael y canlyniadau canlynol. Sut allech chi ddelio â'r dasg hon yn Excel?

Prif Dabl   Rhannwch y tabl yn dablau lluosog yn ôl gwerth colofn Rhannwch y tabl yn dablau lluosog yn ôl rhesi cyfrif

Rhannwch dabl mawr yn dablau lluosog yn seiliedig ar werth colofn gyda chod VBA

Rhannwch dabl mawr yn dablau lluosog yn seiliedig ar y nifer benodol o resi â chod VBA

Rhannwch dabl mawr yn dablau lluosog yn seiliedig ar werth colofn neu nifer y rhesi gyda nodwedd anhygoel


Rhannwch dabl mawr yn dablau lluosog yn seiliedig ar werth colofn gyda chod VBA

I rannu'r tabl mawr hwn yn dablau lluosog yn seiliedig ar werth colofn benodol, gall y cod VBA canlynol ffafrio chi. Gwnewch fel hyn:

1. Daliwch i lawr y ALT + F11 allweddi i agor y Microsoft Visual Basic ar gyfer Ceisiadau ffenestr.

2. Cliciwch Mewnosod > Modiwlau, a gludwch y cod canlynol yn y Modiwlau Ffenestr.

Cod VBA: Rhannwch fwrdd mawr yn dablau lluosog yn ôl colofn allweddol:

Sub Splitdatabycol()
'by 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
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. Ar ôl pasio'r cod, pwyswch F5 allwedd i redeg y cod hwn, ac mae blwch prydlon wedi'i popio allan, dewiswch y rhes pennawd o'ch data, gweler y screenshot:

4. Yna, cliciwch OK, ac mae blwch deialog arall wedi'i popio allan, dewiswch y data colofn rydych chi am rannu'r tabl yn seiliedig arno, gweler y screenshot:

5. Cliciwch OK, mae'r tabl mawr hwn wedi'i rannu'n daflenni gwaith lluosog yn ôl gwerth y golofn sydd ar ôl y brif ddalen. Ac mae'r taflenni gwaith newydd wedi'u henwi gyda gwerth y golofn. Gweler y screenshot:


Rhannwch dabl mawr yn dablau lluosog yn seiliedig ar y nifer benodol o resi â chod VBA

Os oes angen i chi rannu'r tabl yn dablau lluosog yn seiliedig ar nifer y rhesi, gall y cod VBA canlynol eich helpu chi.

1. Daliwch i lawr y ALT + F11 allweddi i agor y Microsoft Visual Basic ar gyfer Ceisiadau ffenestr.

2. Cliciwch Mewnosod > Modiwlau, a gludwch y cod canlynol yn y Modiwlau Ffenestr.

Cod VBA: Rhannwch fwrdd mawr yn dablau lluosog yn ôl nifer y rhesi:

Sub Splitdatabyrows()
'Updated by Extendoffice 
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
Dim xTRg As Range
Dim xNTRg As Range
Dim xIER
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set xTRg = Application.InputBox("Please select the header row:", xTitleId, "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set WorkRng = Application.InputBox("Please select the data range(exclude the header row):", xTitleId, WorkRng.Address, Type:=8)
If TypeName(WorkRng) = "Nothing" Then Exit Sub
SplitRow = Application.InputBox("Split Row Num", xTitleId, Type:=1)
If SplitRow = 0 Then Exit Sub
Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
xIER = WorkRng.Rows.Count
xIER = WorkRng.Row + xIER - 1
Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
    resizeCount = SplitRow
    If (xIER - xRow.Row + 1) < SplitRow Then
        resizeCount = (xIER - xRow.Row + 1)
    End If
    xRow.Resize(resizeCount).Copy
    Set xWs = Application.Worksheets.Add(after:=Application.Worksheets(Application.Worksheets.Count))
    If xIER > (xRow.Row + SplitRow - 1) Then
        xWs.Name = xRow.Row & " - " & (xRow.Row + SplitRow - 1)
    ElseIf xIER = xRow.Row Then
        xWs.Name = xRow.Row
    Else
        xWs.Name = xRow.Row & " - " & xIER
    End If
    Application.ActiveSheet.Range("A1").PasteSpecial
    Set xNTRg = Application.ActiveSheet.Range("A1")
    xTRg.Copy
    xNTRg.Insert
    Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

3. Yna, pwyswch F5 allwedd, yn y blwch deialog popped up, dewiswch y rhes pennawd, gweler y screenshot:

4. Yna, cliciwch OK, ac yn yr ail flwch prydlon, dewiswch yr ystod ddata rydych chi am ei rhannu yn ôl rhesi cyfrif, gweler y screenshot:

5. Ac yna, ewch ymlaen i glicio OK botwm, yn y trydydd blwch prydlon, nodwch nifer y rhesi rydych chi am eu rhannu, gweler y screenshot:

6. Yna, cliciwch OK botwm, mae'r prif dabl wedi'i rannu'n daflenni gwaith lluosog yn seiliedig ar nifer y rhesi fel y dangosir isod y screenshot:


Rhannwch dabl mawr yn dablau lluosog yn seiliedig ar werth colofn neu nifer y rhesi gyda nodwedd anhygoel

Efallai bod y codau uchod yn anodd i'r mwyafrif o ddefnyddwyr, yma, byddaf yn cyflwyno nodwedd anhygoel-Data Hollti of Kutools ar gyfer Excel. Gyda'r cyfleustodau hwn, gallwch rannu tabl mawr yn dablau lluosog yn ôl colofn allweddol neu nifer y rhesi yn gyflym ac yn hawdd.

Awgrym:I gymhwyso hyn Data Hollti nodwedd, yn gyntaf, dylech lawrlwytho'r Kutools ar gyfer Excel, ac yna cymhwyswch y nodwedd yn gyflym ac yn hawdd.

Ar ôl gosod Kutools ar gyfer Excel, gwnewch fel hyn:

1. Dewiswch yr ystod ddata rydych chi am ei rhannu, ac yna, cliciwch Kutools Byd Gwaith > Data Hollti, gweler y screenshot:

2. Yn y Rhannwch Ddata yn Daflenni Gwaith Lluosog blwch deialog, nodwch y gosodiadau yn ôl eich angen:

(1.) Dewis Colofn benodol or Rhesi sefydlog oddi wrth y Hollti yn seiliedig ar adran yn ôl yr angen;

(2.) Nodwch enw'r daflen waith newydd o'r Rheolau rhestr ostwng, gallwch ychwanegu'r Rhagolwg or Ôl-ddodiad i'r enwau dalen hefyd.

3. Yna, cliciwch Ok botwm, ac yn awr, mae'r tabl mawr wedi'i rannu'n dablau bach lluosog mewn llyfr gwaith newydd. Gweler sgrinluniau:

Rhannwch y tabl yn dablau lluosog yn ôl gwerth colofn Rhannwch y tabl yn dablau lluosog yn ôl rhesi cyfrif

Cliciwch i Lawrlwytho Kutools ar gyfer Excel a threial am ddim Nawr!


Erthyglau mwy cymharol:

  • Rhannwch lyfr gwaith i wahanu ffeiliau Excel yn Excel
  • Efallai y bydd angen i chi rannu llyfr gwaith mawr i wahanu ffeiliau Excel gan arbed pob taflen waith o'r llyfr gwaith fel ffeil Excel unigol. Er enghraifft, gallwch rannu llyfr gwaith yn sawl ffeil Excel unigol ac yna danfon pob ffeil i wahanol berson i'w drin. Trwy wneud hynny, gallwch gael rhai pobl i drin data penodol, a chadw'ch data yn ddiogel. Bydd yr erthygl hon yn cyflwyno ffyrdd i rannu llyfr gwaith mawr i wahanu ffeiliau Excel yn seiliedig ar bob taflen waith.
  • Rhannwch Enw Llawn I'r Enw Cyntaf Ac Olaf Yn Excel
  • Gan dybio bod gennych roster enw fel y mae'r llun sgrin gyntaf yn ei ddangos mewn colofn sengl isod, ac mae angen i chi rannu'r enw llawn i'r golofn enw cyntaf colofn colofn enw canol a'r golofn enw olaf fel y dangosir y screenshot canlynol. Dyma rai dulliau anodd i'ch helpu chi i ddatrys y broblem hon.
  • Hollti Gair neu Rif Mewn i Gelloedd ar Wahân Yn Excel
  • Os oes gennych chi restr o rifau neu eiriau mewn taflen waith, ac nawr mae angen i chi rannu cynnwys y gell yn lythrennau ar wahanol gelloedd fel y dangosir y screenshot canlynol, sut allwch chi ddelio â'r swydd hon yn Excel?

 


  • Bar Fformiwla Gwych (golygu llinellau lluosog o destun a fformiwla yn hawdd); Cynllun Darllen (darllen a golygu nifer fawr o gelloedd yn hawdd); Gludo i'r Ystod Hidlo...
  • Uno Celloedd / Rhesi / Colofnau a Cadw Data; Cynnwys Celloedd Hollt; Cyfuno Rhesi Dyblyg a Swm / Cyfartaledd... Atal Celloedd Dyblyg; Cymharwch y Meysydd...
  • Dewiswch Dyblyg neu Unigryw Rhesi; Dewiswch Blank Rows (mae pob cell yn wag); Darganfyddiad Gwych a Darganfyddiad Niwlog mewn Llawer o Lyfrau Gwaith; Dewis ar Hap ...
  • Copi Union Celloedd Lluosog heb newid cyfeirnod fformiwla; Auto Creu Cyfeiriadau i Daflenni Lluosog; Mewnosod Bwledi, Blychau Gwirio a mwy ...
  • Fformiwlâu Hoff a Mewnosod yn Gyflym, Meysydd, Siartiau a Lluniau; Amgryptio Celloedd gyda chyfrinair; Creu Rhestr Bostio ac anfon e-byst ...
  • Testun Detholiad, Ychwanegu Testun, Tynnu yn ôl Swydd, Tynnwch y Gofod; Creu ac Argraffu Subtotals Paging; Trosi rhwng Cynnwys a Sylwadau Celloedd...
  • Hidlo Super (arbed a chymhwyso cynlluniau hidlo i ddalenni eraill); Trefnu Uwch yn ôl mis / wythnos / dydd, amlder a mwy; Hidlo Arbennig gan feiddgar, italig ...
  • Cyfuno Llyfrau Gwaith a Thaflenni Gwaith; Uno Tablau yn seiliedig ar golofnau allweddol; Rhannwch Ddata yn Daflenni Lluosog; Trosi Swp xls, xlsx a PDF...
  • Grwpio Tabl Pivot yn ôl rhif wythnos, diwrnod o'r wythnos a mwy ... Dangos Celloedd Datgloi, wedi'u Cloi yn ôl gwahanol liwiau; Amlygu Celloedd sydd â Fformiwla / Enw...
tab kte 201905
  • Galluogi golygu a darllen tabbed yn Word, Excel, PowerPoint, Cyhoeddwr, Mynediad, Visio a Phrosiect.
  • Agor a chreu dogfennau lluosog mewn tabiau newydd o'r un ffenestr, yn hytrach nag mewn ffenestri newydd.
  • Yn cynyddu eich cynhyrchiant 50%, ac yn lleihau cannoedd o gliciau llygoden i chi bob dydd!
gwaelod officetab

 

Comments (13)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Thank you very much.....
This comment was minimized by the moderator on the site
Super Sache

Frage:

Ist es möglich die Tabelle immer neu zu füllen und neu zu berechnen.
Bin absoluter anfänger. :-)
Danke im Voraus
This comment was minimized by the moderator on the site
Hello, Lukas,
I'm sorry, the methods in this article can't support to update the new data when the original data is changed.
So, you need to run the code again to get the latest data if there are changes in your data.
Thank you!
This comment was minimized by the moderator on the site
I can't get this macro to work (Split A Large Table Into Multiple Tables Based On Column Value With VBA Code)
My table has 5 columns and 639,165 rows. Is it too big?
This comment was minimized by the moderator on the site
Hello, Rebekah

If the data is too large, the code will not work perfectly.
Here, I recommend our Kutools for Excel' Split Data feature for you. With this feature, you can split large data to multiple sheets quickly and easily.
You can try it for 30 days freely. Please download it ffrom: https://www.extendoffice.com/download/kutools-for-excel.html
Please have a try, hope it can help you!
This comment was minimized by the moderator on the site
Hallo zusammen. Ich habe das gleiche Problem wie cGast - gibt es dazu eine Lösung?
This comment was minimized by the moderator on the site
Hi, Miriam,

The VBA code has been updated to a new one in this article, please try it again, if you have any other problem, please comment here. Thank you!
This comment was minimized by the moderator on the site
I tried "Split a large table into multiple tables based on the specific number of rows with VBA code" with my data of 103,000 rows split in groups of 15000 which should have returned 8 sheets, however it didnt work, it just produced 8 sheets with the headers only. but it does work when i use it with less that 10000rows. any help there?
This comment was minimized by the moderator on the site
Hello cguest,
Yes, as you said, the VBA code does not work correctlly when there are lots of data, here, I provide a new code, please try:
Sub Splitdatabyrows()
'Updated by Extendoffice 
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
Dim xTRg As Range
Dim xNTRg As Range
Dim xIER
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection


Set xTRg = Application.InputBox("Please select the header row:", xTitleId, "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set WorkRng = Application.InputBox("Please select the data range(exclude the header row):", xTitleId, WorkRng.Address, Type:=8)
If TypeName(WorkRng) = "Nothing" Then Exit Sub


SplitRow = Application.InputBox("Split Row Num", xTitleId, Type:=1)
If SplitRow = 0 Then Exit Sub

Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
xIER = WorkRng.Rows.Count
xIER = WorkRng.Row + xIER - 1


Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
    resizeCount = SplitRow
    If (xIER - xRow.Row + 1) < SplitRow Then
        resizeCount = (xIER - xRow.Row + 1)
    End If
    xRow.Resize(resizeCount).Copy
    Set xWs = Application.Worksheets.Add(after:=Application.Worksheets(Application.Worksheets.Count))
    If xIER > (xRow.Row + SplitRow - 1) Then
        xWs.Name = xRow.Row & " - " & (xRow.Row + SplitRow - 1)
    ElseIf xIER = xRow.Row Then
        xWs.Name = xRow.Row
    Else
        xWs.Name = xRow.Row & " - " & xIER
    End If
    Application.ActiveSheet.Range("A1").PasteSpecial
    Set xNTRg = Application.ActiveSheet.Range("A1")
    xTRg.Copy
    xNTRg.Insert
    Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Hope it can help you, Thank you!
This comment was minimized by the moderator on the site
"Teilen Sie eine große Tabelle basierend auf der spezifischen Anzahl von Zeilen mit VBA-Code in mehrere Tabellen auf"Funktioniert echt Super. Ist es möglich dass auch Verbundene Zellen erkannt und die Anzahl der Zeilen entsprechend angepasst wird so dass die Verbundenen Zellen beim Seitenumbruch nicht getrennt werden?
This comment was minimized by the moderator on the site
Если разбиваете по строкам и строк больше, чем 32 767 то поменяйте тип данных у переменных xIER и SplitRow с Integer на Long
This comment was minimized by the moderator on the site
Ich habe die erste Variante mit 456.913 Zeilen und 8 Spalten probiert - leider ohne dass irgendwas ausgeführt wurde.
This comment was minimized by the moderator on the site
Всем привет. Столкнулся с проблемой. У меня таблица из 7 колонок и 235000 строк. Макрос не разбивает на страницы. Вернее он страницы создает но они внутри пустые. Тестировал с меньшим количеством строк примерно 1000. Макрос срабатывал. Подскажите метод решения.
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations