انتقل إلى المحتوى الرئيسي

كيفية تقسيم جدول كبير إلى جداول صغيرة متعددة في إكسيل؟

إذا كانت لديك ورقة عمل كبيرة تحتوي على أعمدة متعددة ومئات أو آلاف من بيانات الصفوف ، فأنت تريد الآن تقسيم هذا الجدول الكبير إلى جداول صغيرة متعددة استنادًا إلى قيمة العمود أو عدد الصفوف للحصول على النتائج التالية. كيف يمكنك التعامل مع هذه المهمة في Excel؟

الجدول الرئيسي   تقسيم الجدول إلى جداول متعددة حسب قيمة العمود تقسيم الجدول إلى جداول متعددة حسب عدد الصفوف

قسّم جدولًا كبيرًا إلى جداول متعددة بناءً على قيمة العمود برمز VBA

قم بتقسيم جدول كبير إلى جداول متعددة بناءً على عدد محدد من الصفوف برمز VBA

قسّم جدولًا كبيرًا إلى جداول متعددة بناءً على قيمة العمود أو عدد الصفوف بميزة مذهلة


قسّم جدولًا كبيرًا إلى جداول متعددة بناءً على قيمة العمود برمز VBA

لتقسيم هذا الجدول الكبير إلى جداول متعددة بناءً على قيمة عمود معينة ، يمكن أن تقدم لك التعليمات البرمجية VBA التالية خدمة. يرجى القيام بذلك على النحو التالي:

1. اضغط باستمرار على ALT + F11 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.

2. انقر إدراج > وحدة، والصق الكود التالي في ملف وحدة نافذة او شباك.

كود فبا: تقسيم جدول كبير إلى جداول متعددة حسب العمود الرئيسي:

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 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.

2. انقر إدراج > وحدة، والصق الكود التالي في ملف وحدة نافذة او شباك.

كود فبا: تقسيم جدول كبير إلى جداول متعددة حسب عدد الصفوف:

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 كوتولس ل إكسيل. باستخدام هذه الأداة المساعدة ، يمكنك تقسيم جدول كبير إلى جداول متعددة حسب عمود المفتاح أو عدد الصفوف بسرعة وسهولة.

نصيحة:لتطبيق هذا تقسيم البيانات الميزة ، أولاً ، يجب عليك تنزيل ملف كوتولس ل إكسيل، ثم قم بتطبيق الميزة بسرعة وسهولة.

بعد تثبيت كوتولس ل إكسيل، يرجى القيام بذلك على النحو التالي:

1. حدد نطاق البيانات الذي تريد تقسيمه ، ثم انقر فوق كوتولس بلس > تقسيم البيانات، انظر لقطة الشاشة:

2. في تقسيم البيانات إلى أوراق عمل متعددة مربع الحوار ، حدد الإعدادات حسب حاجتك:

(1.) حدد عمود محدد or صفوف ثابتة من انقسام على أساس قسم ما تحتاجه ؛

(2.) حدد اسم أوراق العمل الجديد من قوانيـن القائمة المنسدلة ، يمكنك إضافة بادئة or لاحقة إلى أسماء الأوراق أيضًا.

3. ثم اضغط Ok والآن ، تم تقسيم الجدول الكبير إلى عدة جداول صغيرة في مصنف جديد. انظر لقطات الشاشة:

تقسيم الجدول إلى جداول متعددة حسب قيمة العمود تقسيم الجدول إلى جداول متعددة حسب عدد الصفوف

انقر لتنزيل Kutools for Excel والتجربة المجانية الآن!


المزيد من المقالات ذات الصلة:

  • تقسيم مصنف لفصل ملفات Excel في Excel
  • قد تحتاج إلى تقسيم مصنف كبير لفصل ملفات Excel مع حفظ كل ورقة عمل من المصنف كملف Excel فردي. على سبيل المثال ، يمكنك تقسيم مصنف إلى عدة ملفات Excel فردية ثم تسليم كل ملف إلى شخص مختلف للتعامل معه. من خلال القيام بذلك ، يمكنك جعل بعض الأشخاص يتعاملون مع بيانات محددة ، والحفاظ على أمان بياناتك. ستقدم هذه المقالة طرقًا لتقسيم مصنف كبير لفصل ملفات Excel استنادًا إلى كل ورقة عمل.
  • تقسيم الاسم الكامل إلى الاسم الأول والأخير في Excel
  • لنفترض أن لديك قائمة أسماء كما تظهر لقطة الشاشة الأولى في عمود واحد أدناه ، وتحتاج إلى تقسيم الاسم الكامل إلى عمود الاسم الأول - عمود الاسم الأوسط وعمود الاسم الأخير كما هو موضح في لقطة الشاشة التالية. فيما يلي بعض الطرق الصعبة لمساعدتك في حل هذه المشكلة.
  • تقسيم عمود طويل إلى أعمدة متعددة في Excel
  • إذا كان لديك بيانات عمود طويل في Excel والتي ستكون مزعجة عند عرضها. ولكن الآن ، إذا كان بإمكانك تقسيم هذه القائمة الطويلة إلى عدة أعمدة في Excel ، فستجعل المشاهدة مريحة.
  • قسّم الكلمة أو الرقم إلى خلايا منفصلة في Excel
  • إذا كانت لديك قائمة بالأرقام أو الكلمات في ورقة عمل ، وتحتاج الآن إلى تقسيم محتويات الخلية إلى أحرف على خلايا مختلفة كما هو موضح في لقطة الشاشة التالية ، كيف يمكنك التعامل مع هذه الوظيفة في Excel؟

 


  • سوبر فورميولا بار (بسهولة تحرير أسطر متعددة من النص والصيغة) ؛ تخطيط القراءة (قراءة وتحرير أعداد كبيرة من الخلايا بسهولة) ؛ لصق في النطاق المصفى
  • دمج الخلايا / الصفوف / الأعمدة وحفظ البيانات. تقسيم محتوى الخلايا ؛ اجمع الصفوف المكررة والمجموع / المتوسط... منع تكرار الخلايا؛ قارن النطاقات
  • حدد مكرر أو فريد صفوف حدد صفوف فارغة (جميع الخلايا فارغة) ؛ البحث الفائق والبحث الغامض في العديد من المصنفات. تحديد عشوائي ...
  • نسخة طبق الأصل خلايا متعددة بدون تغيير مرجع الصيغة ؛ إنشاء المراجع تلقائيًا إلى أوراق متعددة أدخل الرموز النقطية، مربعات الاختيار والمزيد ...
  • المفضلة وإدراج الصيغ بسرعةوالنطاقات والمخططات والصور ؛ تشفير الخلايا مع كلمة السر إنشاء قائمة بريدية وإرسال رسائل البريد الإلكتروني ...
  • استخراج النص، إضافة نص ، إزالة حسب الموضع ، إزالة الفضاء؛ إنشاء وطباعة المجاميع الفرعية لترحيل الصفحات ؛ التحويل بين محتوى الخلايا والتعليقات
  • سوبر تصفية (حفظ وتطبيق مخططات التصفية على أوراق أخرى) ؛ فرز متقدم حسب الشهر / الأسبوع / اليوم ، التكرار والمزيد ؛ مرشح خاص بواسطة bold، italic ...
  • اجمع بين المصنفات وأوراق العمل؛ دمج الجداول على أساس الأعمدة الرئيسية ؛ تقسيم البيانات إلى أوراق متعددة; تحويل دفعة xls و xlsx و PDF
  • تجميع الجدول المحوري حسب رقم الأسبوع واليوم من الأسبوع والمزيد ... إظهار الخلايا غير المؤمنة والمغلقة بألوان مختلفة قم بتمييز الخلايا التي لها صيغة / اسم
علامة تبويب kte 201905
  • تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
  • فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
  • يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!
أوفيسيتاب القاع

 

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