Gå til hovedindhold

Hvordan opdeles en stor tabel i flere små tabeller i Excel?

Hvis du har et stort regneark, der indeholder flere kolonner og hundreder eller tusinder af rækkedata, vil du nu opdele denne store tabel i flere små tabeller baseret på kolonneværdien eller antallet af rækker for at få følgende resultater. Hvordan kunne du håndtere denne opgave i Excel?

Hovedbord   Opdel tabel i flere tabeller efter kolonneværdi Opdel bord i flere tabeller efter antal rækker

Opdel en stor tabel i flere tabeller baseret på kolonneværdi med VBA-kode

Opdel en stor tabel i flere tabeller baseret på det specifikke antal rækker med VBA-kode

Opdel en stor tabel i flere tabeller baseret på kolonneværdi eller antal rækker med en fantastisk funktion


Opdel en stor tabel i flere tabeller baseret på kolonneværdi med VBA-kode

For at opdele denne store tabel i flere tabeller baseret på en bestemt kolonneværdi, kan følgende VBA-kode gøre dig en tjeneste. Gør som dette:

1. Hold nede ALT + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. Klik indsatte > Moduler, og indsæt følgende kode i Moduler Vindue.

VBA-kode: Del en stor tabel i flere tabeller efter nøglekolonne:

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. Når du har indsat koden, skal du trykke på F5 nøgle til at køre denne kode, og en promptboks vises, skal du vælge overskriftsrækken fra dine data, se skærmbillede:

4. Klik derefter på OK, og en anden dialogboks vises. Vælg venligst de søjledata, du vil opdele tabellen ud fra, se skærmbillede:

5. Klik OK, denne store tabel er opdelt i flere regneark efter kolonneværdien, der er placeret efter masterarket. Og de nye regneark er navngivet med kolonneværdien. Se skærmbillede:


Opdel en stor tabel i flere tabeller baseret på det specifikke antal rækker med VBA-kode

Hvis du har brug for at opdele tabellen i flere tabeller baseret på antallet af rækker, kan følgende VBA-kode hjælpe dig.

1. Hold nede ALT + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. Klik indsatte > Moduler, og indsæt følgende kode i Moduler Vindue.

VBA-kode: Del en stor tabel i flere tabeller efter antal rækker:

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. Tryk derefter på F5 nøgle, i pop op-dialogboksen skal du vælge overskriftsrækken, se skærmbillede:

4. Klik derefter på OK, og i det andet felt til prompt skal du vælge det dataområde, du vil opdele efter antal rækker, se skærmbillede:

5. Og fortsæt med at klikke OK knap, i det tredje promptfelt, indtast antallet af rækker, som du vil opdele efter, se skærmbillede:

6. Klik derefter på OK knap, er hovedtabellen opdelt i flere regneark baseret på antallet af rækker som vist nedenstående skærmbillede:


Opdel en stor tabel i flere tabeller baseret på kolonneværdi eller antal rækker med en fantastisk funktion

Kan være ovenstående koder er vanskelige for de fleste brugere, her vil jeg introducere en fantastisk funktion-Opdel data of Kutools til Excel. Med dette værktøj kan du opdele en stor tabel i flere tabeller efter nøglekolonne eller antal rækker hurtigt og nemt.

tips:At anvende dette Opdel data funktion, for det første skal du downloade Kutools til Excel, og anvend derefter funktionen hurtigt og nemt.

Efter installation Kutools til Excelskal du gøre som dette:

1. Vælg det dataområde, du vil opdele, og klik derefter på Kutools Plus > Opdel data, se skærmbillede:

2. I Opdel data i flere regneark dialogboks, skal du angive indstillingerne efter dit behov:

(1.) Vælg Specifik kolonne or Faste rækker fra Split baseret på sektion, som du har brug for;

(2.) Angiv det nye regnearknavn fra Regler rulleliste, kan du tilføje Præfiks or Suffiks til arknavne også.

3. Klik derefter på Ok knappen, og nu er den store tabel opdelt i flere små tabeller i en ny projektmappe. Se skærmbilleder:

Opdel tabel i flere tabeller efter kolonneværdi Opdel bord i flere tabeller efter antal rækker

Klik for at downloade Kutools til Excel og gratis prøveversion nu!


Flere relative artikler:

  • Opdel en projektmappe for at adskille Excel-filer i Excel
  • Det kan være nødvendigt at dele en stor projektmappe for at adskille Excel-filer ved at gemme hvert regneark i projektmappen som en individuel Excel-fil. For eksempel kan du opdele en projektmappe i flere individuelle Excel-filer og derefter levere hver fil til forskellige personer for at håndtere den. Ved at gøre det kan du få bestemte personer til at håndtere specifikke data og holde dine data sikre. Denne artikel introducerer måder at opdele en stor projektmappe på for at adskille Excel-filer baseret på hvert regneark.
  • Opdel fuldt navn til for- og efternavn i Excel
  • Antag, at du har en navneoversigt, som det første skærmbillede vises i en enkelt kolonne nedenfor, og du skal opdele det fulde navn til fornavnskolonnen , mellemkolonne og efternavnskolonne som det følgende skærmbillede vises. Her er nogle vanskelige metoder til at hjælpe dig med at løse dette problem.
  • Opdel en lang kolonne i flere kolonner i Excel
  • Hvis du har en lang søjledata i Excel, som vil være besværlig, når du ser dem. Men nu, hvis du kan opdele en sådan lang liste i flere kolonner i Excel, vil det gøre visningen bekvemt.
  • Opdel ord eller antal i separate celler i Excel
  • Hvis du har en liste med tal eller ord i et regneark, og nu er du nødt til at opdele celleindholdet i bogstaver på forskellige celler som vist nedenstående skærmbillede, hvordan kan du håndtere dette job i Excel?
  • Opdel en lang liste i lige store grupper i Excel
  • Hvis du har en lang liste med data, der er nødvendige for at blive delt i flere lige store grupper som følgende skærmbillede vist, hvordan kan du håndtere denne opgave hurtigt og nemt i Excel?

 


  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner og opbevaring af data; Split celler indhold; Kombiner duplikatrækker og sum / gennemsnit... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Foretrukne og hurtigt indsætte formler, Områder, diagrammer og billeder; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Pivottabelgruppering efter ugenummer, ugedag og mere ... Vis ulåste, låste celler ved forskellige farver; Fremhæv celler, der har formel / navn...
kte-fane 201905
  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund

 

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