Loncat ke daftar isi utama

Bagaimana cara membagi tabel besar menjadi beberapa tabel kecil di Excel?

Pengarang: Xiaoyang Terakhir Dimodifikasi: 2022-07-14

Jika Anda memiliki lembar kerja besar yang berisi beberapa kolom dan ratusan atau ribuan data baris, sekarang, Anda ingin memisahkan tabel besar ini menjadi beberapa tabel kecil berdasarkan nilai kolom atau jumlah baris untuk mendapatkan hasil berikut ini. Bagaimana Anda bisa menangani tugas ini di Excel?

Meja Utama   Pisahkan tabel menjadi beberapa tabel berdasarkan nilai kolom Pisahkan tabel menjadi beberapa tabel dengan jumlah baris

Pisahkan tabel besar menjadi beberapa tabel berdasarkan nilai kolom dengan kode VBA

Pisahkan tabel besar menjadi beberapa tabel berdasarkan jumlah baris tertentu dengan kode VBA

Pisahkan tabel besar menjadi beberapa tabel berdasarkan nilai kolom atau jumlah baris dengan fitur yang luar biasa


Pisahkan tabel besar menjadi beberapa tabel berdasarkan nilai kolom dengan kode VBA

Untuk membagi tabel besar ini menjadi beberapa tabel berdasarkan nilai kolom tertentu, kode VBA berikut dapat membantu Anda. Harap lakukan seperti ini:

1. Tahan ALT + F11 kunci untuk membuka Microsoft Visual Basic untuk Aplikasi jendela.

2. Klik Menyisipkan > Modul, dan tempel kode berikut di Modul Jendela.

Kode VBA: Pisahkan tabel besar menjadi beberapa tabel berdasarkan kolom kunci:

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. Setelah menempelkan kode, tekan F5 kunci untuk menjalankan kode ini, dan kotak prompt muncul, pilih baris header dari data Anda, lihat tangkapan layar:

4. Lalu klik OK, dan kotak dialog lain muncul, pilih data kolom yang ingin Anda pisahkan berdasarkan tabel, lihat tangkapan layar:

5. Klik OK, tabel besar ini telah dipecah menjadi beberapa lembar kerja berdasarkan nilai kolom yang terletak setelah lembar master. Dan lembar kerja baru diberi nama dengan nilai kolom. Lihat tangkapan layar:


Pisahkan tabel besar menjadi beberapa tabel berdasarkan jumlah baris tertentu dengan kode VBA

Jika Anda perlu membagi tabel menjadi beberapa tabel berdasarkan jumlah baris, kode VBA berikut dapat membantu Anda.

1. Tahan ALT + F11 kunci untuk membuka Microsoft Visual Basic untuk Aplikasi jendela.

2. Klik Menyisipkan > Modul, dan tempel kode berikut di Modul Jendela.

Kode VBA: Pisahkan tabel besar menjadi beberapa tabel dengan jumlah baris:

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. Lalu tekan F5 kunci, di kotak dialog yang muncul, pilih baris header, lihat tangkapan layar:

4. Lalu klik OK, dan di kotak prompt kedua, pilih rentang data yang ingin Anda pisahkan dengan jumlah baris, lihat tangkapan layar:

5. Dan kemudian, lanjutkan dengan mengklik OK tombol, di kotak prompt ketiga, masukkan jumlah baris yang ingin Anda pisahkan, lihat tangkapan layar:

6. Lalu klik OK tombol, tabel master telah dipecah menjadi beberapa lembar kerja berdasarkan jumlah baris seperti gambar di bawah ini yang ditampilkan:


Pisahkan tabel besar menjadi beberapa tabel berdasarkan nilai kolom atau jumlah baris dengan fitur yang luar biasa

Mungkin kode di atas sulit bagi sebagian besar pengguna, di sini, saya akan memperkenalkan fitur luar biasa-Data split of Kutools untuk Excel. Dengan utilitas ini, Anda dapat membagi tabel besar menjadi beberapa tabel berdasarkan kolom kunci atau jumlah baris dengan cepat dan mudah.

Tip:Untuk menerapkan ini Data split fitur, pertama, Anda harus mengunduh Kutools untuk Excel, lalu terapkan fitur dengan cepat dan mudah.

Setelah menginstal Kutools untuk Excel, lakukan seperti ini:

1. Pilih rentang data yang ingin Anda Pisahkan, lalu klik Kutools Ditambah > Data split, lihat tangkapan layar:

2. di Pisahkan Data menjadi Beberapa Lembar Kerja kotak dialog, tentukan pengaturan yang Anda butuhkan:

(1.) Pilih Kolom tertentu or Baris tetap dari Pisahkan berdasarkan bagian yang Anda butuhkan;

(2.) Tentukan nama lembar kerja baru dari Peraturan daftar drop-down, Anda dapat menambahkan Awalan or Akhiran ke nama sheet juga.

3. Lalu klik Ok tombol, dan sekarang, tabel besar telah dipecah menjadi beberapa tabel kecil di buku kerja baru. Lihat tangkapan layar:

Pisahkan tabel menjadi beberapa tabel berdasarkan nilai kolom Pisahkan tabel menjadi beberapa tabel dengan jumlah baris

Klik untuk Mengunduh Kutools for Excel dan uji coba gratis Sekarang!


Artikel yang lebih relatif:

  • Pisahkan Buku Kerja Untuk Memisahkan File Excel Di Excel
  • Anda mungkin perlu membagi buku kerja besar untuk memisahkan file Excel dengan menyimpan setiap lembar kerja buku kerja sebagai file Excel individual. Misalnya, Anda bisa membagi buku kerja menjadi beberapa file Excel individual lalu mengirimkan setiap file ke orang yang berbeda untuk menanganinya. Dengan melakukan itu, Anda bisa mendapatkan orang tertentu menangani data tertentu, dan menjaga data Anda tetap aman. Artikel ini akan memperkenalkan cara untuk membagi buku kerja besar untuk memisahkan file Excel berdasarkan setiap lembar kerja.
  • Pisahkan Nama Lengkap Menjadi Nama Depan Dan Belakang Di Excel
  • Misalkan Anda memiliki daftar nama seperti yang ditunjukkan tangkapan layar pertama dalam satu kolom di bawah ini, dan Anda perlu membagi nama lengkap ke kolom nama depan, kolom nama tengah dan kolom nama belakang seperti gambar berikut yang ditampilkan. Berikut adalah beberapa metode rumit untuk membantu Anda mengatasi masalah ini.
  • Pisahkan Kolom Panjang Menjadi Beberapa Kolom Di Excel
  • Jika Anda memiliki data kolom yang panjang di Excel yang akan merepotkan saat melihatnya. Tetapi sekarang jika Anda dapat membagi daftar yang begitu panjang menjadi beberapa kolom di Excel, itu akan membuat tampilan dengan nyaman.
  • Pisahkan Kata atau Angka Menjadi Sel Terpisah Di Excel
  • Jika Anda memiliki daftar angka atau kata di lembar kerja, dan sekarang Anda perlu membagi isi sel menjadi huruf pada sel yang berbeda seperti gambar berikut yang ditampilkan, bagaimana Anda bisa menangani pekerjaan ini di Excel?

 


  • Bilah Formula Super (dengan mudah mengedit beberapa baris teks dan rumus); Membaca Tata Letak (membaca dan mengedit sel dalam jumlah besar dengan mudah); Tempel ke Rentang yang Difilter...
  • Gabungkan Sel / Baris / Kolom dan Menyimpan Data; Pisahkan Konten Sel; Gabungkan Baris Duplikat dan Jumlah / Rata-rata... Mencegah Sel Duplikat; Bandingkan Rentang...
  • Pilih Duplikat atau Unik Baris; Pilih Baris Kosong (semua sel kosong); Temukan Super dan Temukan Fuzzy di Banyak Buku Kerja; Pilih Acak ...
  • Salinan Tepat Beberapa Sel tanpa mengubah referensi rumus; Buat Referensi Otomatis ke Beberapa Lembar; Sisipkan Poin, Kotak Centang, dan lainnya ...
  • Favorit dan Sisipkan Rumus dengan Cepat, Rentang, Grafik dan Gambar; Enkripsi Sel dengan kata sandi; Buat Milis dan mengirim email ...
  • Ekstrak Teks, Tambahkan Teks, Hapus berdasarkan Posisi, Hapus Space; Membuat dan Mencetak Subtotal Paging; Konversi Konten Antar Sel dan Komentar...
  • Filter Super (simpan dan terapkan skema filter ke sheet lain); Penyortiran Lanjutan menurut bulan / minggu / hari, frekuensi dan lainnya; Filter Khusus dengan huruf tebal, miring ...
  • Gabungkan Workbooks dan WorkSheets; Gabungkan Tabel berdasarkan kolom kunci; Pisahkan Data menjadi Beberapa Lembar; Konversi Batch xls, xlsx dan PDF...
  • Pengelompokan Tabel Pivot menurut nomor minggu, hari dalam seminggu dan banyak lagi ... Tampilkan Sel yang Tidak Terkunci dan Terkunci dengan warna berbeda; Sorot Sel Yang Memiliki Rumus / Nama...
tab kte 201905
  • Aktifkan pengeditan dan pembacaan tab di Word, Excel, PowerPoint, Publisher, Access, Visio, dan Project.
  • Buka dan buat banyak dokumen di tab baru di jendela yang sama, bukan di jendela baru.
  • Meningkatkan produktivitas Anda sebesar 50%, dan mengurangi ratusan klik mouse untuk Anda setiap hari!
officetab bawah

 

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