ไปยังเนื้อหาหลัก

วิธีแบ่งตารางขนาดใหญ่เป็นตารางขนาดเล็กหลาย ๆ ตารางใน Excel

หากคุณมีเวิร์กชีตขนาดใหญ่ซึ่งมีหลายคอลัมน์และข้อมูลหลายร้อยหรือหลายพันแถวตอนนี้คุณต้องการแบ่งตารางขนาดใหญ่นี้ออกเป็นตารางเล็ก ๆ หลายตารางโดยยึดตามค่าคอลัมน์หรือจำนวนแถวเพื่อให้ได้ผลลัพธ์ต่อไปนี้ คุณจะจัดการกับงานนี้ใน Excel ได้อย่างไร?

ตารางหลัก   แยกตารางออกเป็นหลาย ๆ ตารางตามค่าคอลัมน์ แบ่งตารางออกเป็นหลาย ๆ ตารางตามจำนวนแถว

แบ่งตารางขนาดใหญ่ออกเป็นหลาย ๆ ตารางตามค่าคอลัมน์ด้วยรหัส VBA

แบ่งตารางขนาดใหญ่ออกเป็นหลาย ๆ ตารางตามจำนวนแถวที่ระบุด้วยรหัส VBA

แบ่งตารางขนาดใหญ่ออกเป็นหลาย ๆ ตารางตามค่าคอลัมน์หรือจำนวนแถวด้วยคุณสมบัติที่น่าทึ่ง


แบ่งตารางขนาดใหญ่ออกเป็นหลาย ๆ ตารางตามค่าคอลัมน์ด้วยรหัส VBA

หากต้องการแบ่งตารางขนาดใหญ่นี้ออกเป็นหลาย ๆ ตารางโดยยึดตามค่าคอลัมน์ที่ระบุรหัส VBA ต่อไปนี้สามารถช่วยคุณได้ กรุณาทำตามนี้:

1. กด ALT + F11 คีย์เพื่อเปิด Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง

2. คลิก สิ่งที่ใส่เข้าไป > โมดูลและวางรหัสต่อไปนี้ในไฟล์ โมดูล หน้าต่าง.

รหัส VBA: แบ่งตารางขนาดใหญ่ออกเป็นหลาย ๆ ตารางตามคอลัมน์หลัก:

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. หลังจากวางรหัสแล้วให้กด F5 คีย์เพื่อเรียกใช้รหัสนี้และกล่องพร้อมต์จะปรากฏขึ้นโปรดเลือกแถวส่วนหัวจากข้อมูลของคุณดูภาพหน้าจอ:

4. จากนั้นคลิก OKและกล่องโต้ตอบอื่นจะปรากฏขึ้นโปรดเลือกข้อมูลคอลัมน์ที่คุณต้องการแบ่งตารางตามดูภาพหน้าจอ:

5. คลิก OKตารางขนาดใหญ่นี้ถูกแบ่งออกเป็นหลายแผ่นงานตามค่าของคอลัมน์ซึ่งอยู่หลังแผ่นงานหลัก และแผ่นงานใหม่จะถูกตั้งชื่อด้วยค่าคอลัมน์ ดูภาพหน้าจอ:


แบ่งตารางขนาดใหญ่ออกเป็นหลาย ๆ ตารางตามจำนวนแถวที่ระบุด้วยรหัส VBA

หากคุณต้องการแบ่งตารางออกเป็นหลาย ๆ ตารางตามจำนวนแถวรหัส VBA ต่อไปนี้สามารถช่วยคุณได้

1. กด ALT + F11 คีย์เพื่อเปิด Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง

2. คลิก สิ่งที่ใส่เข้าไป > โมดูลและวางรหัสต่อไปนี้ในไฟล์ โมดูล หน้าต่าง.

รหัส VBA: แบ่งตารางขนาดใหญ่ออกเป็นหลาย ๆ ตารางตามจำนวนแถว:

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. จากนั้นกด F5 ในกล่องโต้ตอบที่โผล่ขึ้นมาให้เลือกแถวส่วนหัวดูภาพหน้าจอ:

4. จากนั้นคลิก OKและในกล่องพร้อมต์ที่สองเลือกช่วงข้อมูลที่คุณต้องการแบ่งตามจำนวนแถวดูภาพหน้าจอ:

5. จากนั้นไปที่คลิก OK ในช่องพร้อมต์ที่สามให้ป้อนจำนวนแถวที่คุณต้องการแยกดูภาพหน้าจอ:

6. จากนั้นคลิก OK ปุ่มตารางหลักถูกแบ่งออกเป็นหลายแผ่นตามจำนวนแถวที่แสดงด้านล่างภาพหน้าจอ:


แบ่งตารางขนาดใหญ่ออกเป็นหลาย ๆ ตารางตามค่าคอลัมน์หรือจำนวนแถวด้วยคุณสมบัติที่น่าทึ่ง

รหัสข้างต้นอาจเป็นเรื่องยากสำหรับผู้ใช้ส่วนใหญ่ที่นี่ฉันจะแนะนำคุณสมบัติที่น่าทึ่ง -แยกข้อมูล of Kutools สำหรับ Excel. ด้วยยูทิลิตี้นี้คุณสามารถแบ่งตารางขนาดใหญ่ออกเป็นหลาย ๆ ตารางตามคอลัมน์หลักหรือจำนวนแถวได้อย่างรวดเร็วและง่ายดาย

ทิปส์:ที่จะใช้สิ่งนี้ แยกข้อมูล ประการแรกคุณควรดาวน์โหลดไฟล์ Kutools สำหรับ Excelแล้วใช้คุณสมบัตินี้อย่างรวดเร็วและง่ายดาย

หลังจากการติดตั้ง Kutools สำหรับ Excelโปรดทำตามนี้:

1. เลือกช่วงข้อมูลที่คุณต้องการแยกจากนั้นคลิก Kutools พลัส > แยกข้อมูลดูภาพหน้าจอ:

2. ใน แยกข้อมูลออกเป็นหลายแผ่นงาน กล่องโต้ตอบระบุการตั้งค่าตามความต้องการของคุณ:

(1. ) เลือก คอลัมน์เฉพาะ or แถวคงที่ จาก แยกตาม ส่วนตามที่คุณต้องการ

(2. ) ระบุชื่อแผ่นงานใหม่จากไฟล์ กฎระเบียบ รายการแบบเลื่อนลงคุณสามารถเพิ่มไฟล์ อุปสรรค or วิภัตติ ไปยังชื่อแผ่นงานด้วย

3. จากนั้นคลิก Ok และตอนนี้ตารางขนาดใหญ่ได้ถูกแบ่งออกเป็นตารางเล็ก ๆ หลายตารางในสมุดงานใหม่ ดูภาพหน้าจอ:

แยกตารางออกเป็นหลาย ๆ ตารางตามค่าคอลัมน์ แบ่งตารางออกเป็นหลาย ๆ ตารางตามจำนวนแถว

คลิกเพื่อดาวน์โหลด Kutools สำหรับ Excel และทดลองใช้ฟรีทันที!


บทความที่เกี่ยวข้องเพิ่มเติม:

  • แยกสมุดงานเพื่อแยกไฟล์ Excel ใน Excel
  • คุณอาจต้องแยกสมุดงานขนาดใหญ่เพื่อแยกไฟล์ Excel โดยบันทึกแต่ละแผ่นงานของสมุดงานเป็นไฟล์ Excel แต่ละแผ่น ตัวอย่างเช่นคุณสามารถแบ่งสมุดงานออกเป็นไฟล์ Excel หลายไฟล์จากนั้นส่งแต่ละไฟล์ไปยังบุคคลอื่นเพื่อจัดการกับมัน ด้วยการทำเช่นนี้คุณจะได้รับบุคคลบางคนจัดการกับข้อมูลบางอย่างและรักษาข้อมูลของคุณให้ปลอดภัย บทความนี้จะแนะนำวิธีแยกสมุดงานขนาดใหญ่เพื่อแยกไฟล์ Excel ตามแต่ละแผ่นงาน
  • แยกชื่อเต็มเป็นชื่อและนามสกุลใน Excel
  • สมมติว่าคุณมีบัญชีรายชื่อเมื่อภาพหน้าจอแรกแสดงในคอลัมน์เดียวด้านล่างและคุณต้องแบ่งชื่อเต็มเป็นคอลัมน์ชื่อคอลัมน์ชื่อกลางและคอลัมน์นามสกุลตามภาพหน้าจอต่อไปนี้ ต่อไปนี้เป็นวิธีการที่ยุ่งยากเพื่อช่วยคุณแก้ปัญหานี้
  • แบ่งคอลัมน์ยาวออกเป็นหลายคอลัมน์ใน Excel
  • หากคุณมีข้อมูลคอลัมน์แบบยาวใน Excel ซึ่งจะเป็นปัญหาเมื่อดูข้อมูลเหล่านี้ แต่ตอนนี้ถ้าคุณสามารถแยกรายการยาว ๆ ออกเป็นหลายคอลัมน์ใน Excel ได้ก็จะทำให้การดูสะดวกขึ้น
  • แยกคำหรือตัวเลขออกเป็นเซลล์แยกใน Excel
  • หากคุณมีรายการตัวเลขหรือคำในแผ่นงานและตอนนี้คุณต้องแยกเนื้อหาของเซลล์ออกเป็นตัวอักษรในเซลล์ต่างๆตามภาพหน้าจอต่อไปนี้คุณจะจัดการกับงานนี้ใน Excel ได้อย่างไร?

 


เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel แก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ และการเก็บรักษาข้อมูล แยกเนื้อหาของเซลล์ รวมแถวที่ซ้ำกันและผลรวม / ค่าเฉลี่ย... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แทรกสูตรที่ชื่นชอบและรวดเร็ว, ช่วงแผนภูมิและรูปภาพ; เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • การจัดกลุ่มตาราง Pivot ตาม จำนวนสัปดาห์วันในสัปดาห์และอื่น ๆ ... แสดงปลดล็อกเซลล์ที่ถูกล็อก ด้วยสีที่ต่างกัน เน้นเซลล์ที่มีสูตร / ชื่อ...
kte แท็บ 201905
  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มประสิทธิภาพการทำงานของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง 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