Bỏ qua nội dung chính

Làm thế nào để chia một bảng lớn thành nhiều bảng nhỏ trong Excel?

Nếu bạn có một trang tính lớn chứa nhiều cột và hàng trăm hoặc hàng nghìn hàng dữ liệu, bây giờ, bạn muốn chia bảng lớn này thành nhiều bảng nhỏ dựa trên giá trị cột hoặc số hàng để nhận được kết quả sau. Bạn có thể giải quyết công việc này như thế nào trong Excel?

Bảng chính   Chia bảng thành nhiều bảng theo giá trị cột Chia bảng thành nhiều bảng theo số hàng

Chia một bảng lớn thành nhiều bảng dựa trên giá trị cột bằng mã VBA

Chia một bảng lớn thành nhiều bảng dựa trên số hàng cụ thể bằng mã VBA

Chia một bảng lớn thành nhiều bảng dựa trên giá trị cột hoặc số hàng với một tính năng tuyệt vời


Chia một bảng lớn thành nhiều bảng dựa trên giá trị cột bằng mã VBA

Để chia bảng lớn này thành nhiều bảng dựa trên một giá trị cột cụ thể, mã VBA sau có thể giúp bạn. Vui lòng làm như sau:

1. Giữ ALT + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. Nhấp chuột Chèn > Mô-đunvà dán mã sau vào Mô-đun Cửa sổ.

Mã VBA: Chia một bảng lớn thành nhiều bảng theo cột chính:

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. Sau khi dán mã, nhấn F5 để chạy mã này và một hộp nhắc xuất hiện, vui lòng chọn hàng tiêu đề từ dữ liệu của bạn, xem ảnh chụp màn hình:

4. Sau đó nhấn vào OKvà một hộp thoại khác hiện ra, vui lòng chọn dữ liệu cột mà bạn muốn tách bảng dựa trên, xem ảnh chụp màn hình:

5. Nhấp chuột OK, bảng lớn này đã được chia thành nhiều trang tính theo giá trị cột nằm sau trang tính chính. Và các trang tính mới được đặt tên với giá trị cột. Xem ảnh chụp màn hình:


Chia một bảng lớn thành nhiều bảng dựa trên số hàng cụ thể bằng mã VBA

Nếu bạn cần chia bảng thành nhiều bảng dựa trên số hàng, mã VBA sau có thể giúp bạn.

1. Giữ ALT + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. Nhấp chuột Chèn > Mô-đunvà dán mã sau vào Mô-đun Cửa sổ.

Mã VBA: Chia một bảng lớn thành nhiều bảng theo số hàng:

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. Sau đó nhấn F5 , trong hộp thoại bật lên, hãy chọn hàng tiêu đề, xem ảnh chụp màn hình:

4. Sau đó nhấn vào OKvà trong hộp nhắc thứ hai, hãy chọn phạm vi dữ liệu mà bạn muốn chia theo số hàng, xem ảnh chụp màn hình:

5. Và sau đó, hãy nhấp vào OK , trong hộp nhắc thứ ba, nhập số hàng mà bạn muốn chia nhỏ, xem ảnh chụp màn hình:

6. Sau đó nhấn vào OK , bảng chính đã được chia thành nhiều trang tính dựa trên số hàng như hình ảnh chụp màn hình bên dưới:


Chia một bảng lớn thành nhiều bảng dựa trên giá trị cột hoặc số hàng với một tính năng tuyệt vời

Có thể những đoạn mã trên là khó đối với hầu hết người dùng, ở đây, tôi sẽ giới thiệu một tính năng tuyệt vời-Dữ liệu phân tách of Kutools cho Excel. Với tiện ích này, bạn có thể chia một bảng lớn thành nhiều bảng theo cột chính hoặc số hàng một cách nhanh chóng và dễ dàng.

Lời khuyên:Để áp dụng điều này Dữ liệu phân tách , trước tiên, bạn nên tải xuống Kutools cho Excel, và sau đó áp dụng tính năng một cách nhanh chóng và dễ dàng.

Sau khi cài đặt Kutools cho Excel, hãy làm như sau:

1. Chọn phạm vi dữ liệu mà bạn muốn tách, sau đó bấm Kutools Plus > Dữ liệu phân tách, xem ảnh chụp màn hình:

2. Trong Chia dữ liệu thành nhiều trang tính hộp thoại, chỉ định cài đặt theo nhu cầu của bạn:

(1.) Chọn Cột cụ thể or Hàng cố định từ Phân chia dựa trên phần như bạn cần;

(2.) Chỉ định tên trang tính mới từ Nội quy danh sách thả xuống, bạn có thể thêm Tiếp đầu ngữ or suffix cho cả tên trang tính.

3. Sau đó nhấn vào Ok và bây giờ, bảng lớn đã được chia thành nhiều bảng nhỏ trong một sổ làm việc mới. Xem ảnh chụp màn hình:

Chia bảng thành nhiều bảng theo giá trị cột Chia bảng thành nhiều bảng theo số hàng

Nhấp để Tải xuống Kutools cho Excel và dùng thử miễn phí ngay!


Các bài viết tương đối hơn:

  • Tách sổ làm việc để tách các tệp Excel trong Excel
  • Bạn có thể cần phải chia một sổ làm việc lớn để tách các tệp Excel với việc lưu từng trang của sổ làm việc dưới dạng một tệp Excel riêng lẻ. Ví dụ: bạn có thể chia sổ làm việc thành nhiều tệp Excel riêng lẻ và sau đó giao từng tệp cho người khác xử lý. Bằng cách đó, bạn có thể nhờ một số người xử lý dữ liệu cụ thể và giữ an toàn cho dữ liệu của bạn. Bài viết này sẽ giới thiệu các cách chia sổ làm việc lớn để tách các tệp Excel dựa trên mỗi trang tính.
  • Tách Họ và Tên thành Họ và Tên trong Excel
  • Giả sử bạn có một bảng tên như ảnh chụp màn hình đầu tiên hiển thị trong một cột bên dưới, và bạn cần tách tên đầy đủ thành cột tên , cột tên đệm và cột họ như ảnh chụp màn hình sau. Dưới đây là một số phương pháp thủ thuật để giúp bạn giải quyết vấn đề này.
  • Tách một cột dài thành nhiều cột trong Excel
  • Nếu bạn có một dữ liệu cột dài trong Excel, điều này sẽ gây rắc rối khi xem chúng. Nhưng bây giờ nếu bạn có thể chia danh sách dài như vậy thành nhiều cột trong Excel, nó sẽ làm cho việc xem thuận tiện.
  • Tách từ hoặc số thành các ô riêng biệt trong Excel
  • Nếu bạn có danh sách các số hoặc từ trong một trang tính và bây giờ bạn cần chia nội dung ô thành các chữ cái trên các ô khác nhau như hình minh họa sau đây, bạn có thể giải quyết công việc này trong Excel như thế nào?

 


  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột và Lưu giữ dữ liệu; Nội dung phân chia ô; Kết hợp các hàng trùng lặp và Tổng / Trung bình... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Yêu thích và Chèn công thức nhanh chóng, Dãy, Biểu đồ và Hình ảnh; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Nhóm bảng tổng hợp theo số tuần, ngày trong tuần và hơn thế nữa ... Hiển thị các ô đã mở khóa, đã khóa bởi các màu sắc khác nhau; Đánh dấu các ô có công thức / tênhữu ích. Cảm ơn !
tab kte 201905
  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng

 

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