Note: The other languages of the website are Google-translated. Back to English

Jak rozdělit velkou tabulku na několik malých tabulek v aplikaci Excel?

Pokud máte velký list, který obsahuje více sloupců a stovky nebo tisíce dat řádků, nyní chcete rozdělit tuto velkou tabulku na několik malých tabulek na základě hodnoty sloupce nebo počtu řádků, abyste získali následující výsledky. Jak jste se mohli s tímto úkolem vypořádat v aplikaci Excel?

Hlavní stůl   Rozdělte tabulku na více tabulek podle hodnoty sloupce Rozdělte tabulku na více tabulek podle počtu řádků

Rozdělte velkou tabulku na více tabulek na základě hodnoty sloupce pomocí kódu VBA

Rozdělte velkou tabulku na více tabulek na základě konkrétního počtu řádků pomocí kódu VBA

Rozdělte velkou tabulku na více tabulek na základě hodnoty sloupce nebo počtu řádků s úžasnou funkcí


Rozdělte velkou tabulku na více tabulek na základě hodnoty sloupce pomocí kódu VBA

Chcete-li rozdělit tuto velkou tabulku na více tabulek na základě konkrétní hodnoty sloupce, můžete si udělat následující kód VBA. Udělejte prosím toto:

1. Podržte ALT + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno.

2, klikněte Vložit > Modula vložte následující kód do Modul Okno.

Kód VBA: Rozdělte velkou tabulku na více tabulek podle sloupce klíče:

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. Po vložení kódu stiskněte F5 klíč ke spuštění tohoto kódu a zobrazí se okno s výzvou, vyberte ze svých dat řádek záhlaví, viz screenshot:

4. Potom klepněte na tlačítko OKa vyskočí další dialogové okno, vyberte data sloupce, podle kterých chcete tabulku rozdělit, viz screenshot:

5, klikněte OK, tato velká tabulka byla rozdělena do několika pracovních listů podle hodnoty sloupce, které jsou umístěny za hlavním listem. A nové listy jsou pojmenovány podle hodnoty sloupce. Viz snímek obrazovky:


Rozdělte velkou tabulku na více tabulek na základě konkrétního počtu řádků pomocí kódu VBA

Pokud potřebujete rozdělit tabulku na více tabulek na základě počtu řádků, může vám pomoci následující kód VBA.

1. Podržte ALT + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno.

2, klikněte Vložit > Modula vložte následující kód do Modul Okno.

Kód VBA: Rozdělte velkou tabulku na více tabulek podle počtu řádků:

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. Poté stiskněte tlačítko F5 klíč, v rozevíracím dialogovém okně vyberte řádek záhlaví, viz screenshot:

4. Potom klepněte na tlačítko OKa v druhém řádku výzvy vyberte rozsah dat, který chcete rozdělit podle počtu řádků, viz screenshot:

5. A pak pokračujte kliknutím OK Tlačítko, ve třetím řádku výzvy, zadejte počet řádků, které chcete rozdělit, viz screenshot:

6. Potom klepněte na tlačítko OK Tlačítko, hlavní tabulka byla rozdělena do několika pracovních listů na základě počtu řádků, jak je uvedeno níže:


Rozdělte velkou tabulku na více tabulek na základě hodnoty sloupce nebo počtu řádků s úžasnou funkcí

Možná jsou výše uvedené kódy pro většinu uživatelů obtížné, zde představím úžasnou funkci -Rozdělit data of Kutools pro Excel. Pomocí tohoto nástroje můžete rychle a snadno rozdělit velkou tabulku na více tabulek podle klíčového sloupce nebo počtu řádků.

Tip:Použít toto Rozdělit data funkce, za prvé, měli byste si stáhnout Kutools pro Excela poté tuto funkci rychle a snadno aplikujte.

Po instalaci Kutools pro Excel, udělejte prosím toto:

1. Vyberte rozsah dat, který chcete rozdělit, a poté klikněte na Kutools Plus > Rozdělit data, viz screenshot:

2. V Rozdělte data do více pracovních listů v dialogovém okně zadejte požadovaná nastavení:

(1.) Vyberte Specifický sloupec or Opravené řádky z Rozdělit na základě sekce, jak potřebujete;

(2.) Zadejte název nového listu z pravidla z rozevíracího seznamu můžete přidat Předpona or Přípona i na názvy listů.

3. Potom klepněte na tlačítko Ok Tlačítko a nyní byla velká tabulka v novém sešitu rozdělena na několik malých tabulek. Zobrazit snímky obrazovky:

Rozdělte tabulku na více tabulek podle hodnoty sloupce Rozdělte tabulku na více tabulek podle počtu řádků

Klikněte a stáhněte si Kutools pro Excel a bezplatnou zkušební verzi hned teď!


Více relativních článků:

  • Rozdělte sešit a oddělte soubory aplikace Excel v aplikaci Excel
  • Možná budete muset rozdělit velký sešit a oddělit soubory aplikace Excel uložením každého listu sešitu jako samostatného souboru aplikace Excel. Například můžete sešit rozdělit na několik samostatných souborů aplikace Excel a poté každý soubor doručit jiné osobě, aby jej zvládla. Tímto způsobem můžete zajistit, aby určité osoby zpracovávaly konkrétní údaje, a vaše data budou v bezpečí. Tento článek představí způsoby, jak rozdělit velký sešit na samostatné soubory aplikace Excel na základě každého listu.
  • Rozdělit celé jméno na jméno a příjmení v aplikaci Excel
  • Předpokládejme, že máte seznam jmen, jak se první snímek obrazovky zobrazuje v jednom sloupci níže, a musíte rozdělit celé jméno na sloupec křestního jména column sloupec prostředního jména a sloupec příjmení, jak ukazuje následující snímek obrazovky. Zde je několik složitých metod, které vám pomohou tento problém vyřešit.

 



  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce a uchovávání údajů; Rozdělit obsah buněk; Zkombinujte duplicitní řádky a součet / průměr... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Oblíbené a rychlé vkládání vzorců„Rozsahy, grafy a obrázky; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Seskupování kontingenčních tabulek podle číslo týdne, den v týdnu a další ... Zobrazit odemčené, zamčené buňky různými barvami; Zvýrazněte buňky, které mají vzorec / název...
karta kte 201905
  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50% a omezuje stovky kliknutí myší každý den!
officetab dno

 

Komentáře (10)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Всем привет. Столкнулся с проблемой. У меня таблица из 7 колонок a 235000 строк. Макрос не разбивает на страницы. Вернее он страницы создает но они внутри пустые. Тестировал с меньшим количеством строк примерно 1000. Макрос срабатывал. Подскажите метод решения.
Tento komentář byl moderátorem webu minimalizován
Ich habe die erste Variante mit 456.913 Zeilen und 8 Spalten probiert - leider ohne dass irgendwas ausgeführt wurde.
Tento komentář byl moderátorem webu minimalizován
Если разбиваете по строкам и строк больше, чем 32 767 то поменяйте тип данпыхерна данпыхерну ну
Tento komentář byl moderátorem webu minimalizován
"Teilen Sie eine große Tabelle basierend auf der spezifischen Anzahl von Zeilen s VBA-kódem ve více 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?
Tento komentář byl moderátorem webu minimalizován
Zkoušel jsem "Rozdělit velkou tabulku na více tabulek na základě konkrétního počtu řádků s kódem VBA" s mými daty 103,000 15000 řádků rozdělených do skupin po 8 8, které by měly vrátit 10000 listů, ale nefungovalo to, vytvořilo to jen XNUMX listů s pouze hlavičky. ale funguje to, když to používám s méně než XNUMX XNUMX řádky. nějaká pomoc tam?
Tento komentář byl moderátorem webu minimalizován
Ahoj cguest,
Ano, jak jste řekl, kód VBA nefunguje správně, když existuje mnoho dat, zde poskytuji nový kód, zkuste:
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


Doufám, že vám to pomůže, děkuji!
Tento komentář byl moderátorem webu minimalizován
Ahoj zusammen. Ich habe das gleiche Problem wie cGast - gibt es dazu eine Lösung?
Tento komentář byl moderátorem webu minimalizován
Ahoj Miriam,

Kód VBA byl v tomto článku aktualizován na nový, zkuste to prosím znovu, pokud máte nějaký jiný problém, napište to sem. Děkuji!
Tento komentář byl moderátorem webu minimalizován
Nemohu zprovoznit toto makro (Rozdělit velkou tabulku na více tabulek na základě hodnoty sloupce pomocí kódu VBA)
Moje tabulka má 5 sloupců a 639,165 XNUMX řádků. Je to příliš velké?
Tento komentář byl moderátorem webu minimalizován
Ahoj Rebeko

Pokud jsou data příliš velká, kód nebude fungovat dokonale.
Zde doporučuji naše Kutools pro Excel' Rozdělit data funkce pro vás. Pomocí této funkce můžete rychle a snadno rozdělit velká data na více listů.
Můžete si to vyzkoušet na 30 dní zdarma. Stáhněte si jej prosím z: https://www.extendoffice.com/download/kutools-for-excel.html
Zkuste to prosím, doufám, že vám to pomůže!
Zatím zde nejsou žádné komentáře
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění