Skip to main content

نصائح Excel: تقسيم البيانات إلى أوراق عمل / مصنفات متعددة بناءً على قيمة العمود

Author: Xiaoyang Last Modified: 2025-05-30

عند إدارة مجموعات بيانات كبيرة في Excel، يمكن أن يكون تقسيم البيانات إلى أوراق عمل متعددة بناءً على قيم عمود معين مفيدًا للغاية. هذه الطريقة لا تحسن تنظيم البيانات فحسب، بل تعزز أيضًا سهولة القراءة وتسهل تحليل البيانات بشكل أسهل.

لنفترض أن لديك سجل مبيعات كبير يحتوي على إدخالات متعددة مثل اسم المنتج والكمية المباعة للربع الأول. الهدف هو تقسيم هذه البيانات إلى أوراق عمل منفصلة بناءً على كل اسم منتج بحيث يمكن تحليل أداء المبيعات الفردي لكل منتج على حدة.

تقسيم البيانات إلى أوراق عمل متعددة بناءً على قيمة العمود

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

Split data into multiple worksheets based on column value


تقسيم البيانات إلى أوراق عمل متعددة بناءً على قيمة العمود

عادةً، يمكنك ترتيب قائمة البيانات أولاً، ثم نسخها ولصقها واحدة تلو الأخرى في أوراق عمل جديدة. لكن هذا سيتطلب صبرك لنسخ ولصق بشكل متكرر. في هذا القسم، سنقدم طريقتين مباشرتين لمعالجة هذه المهمة بكفاءة في Excel، مما يوفر لك الوقت ويقلل من احتمالية الأخطاء.

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

1. اضغط باستمرار على مفتاحي ALT + F11 لفتح نافذة Microsoft Visual Basic for Applications.

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

Sub Splitdatabycol()
'updateby 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
Dim xWS 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
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.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 لتشغيل الكود، وسيظهر مربع منبثق لتذكيرك بتحديد صف الرأس، وبعد ذلك، انقر موافق. شاهد لقطة الشاشة:
split data into worksheets with vba code to select header row

4. في المربع المنبثق الثاني، يرجى تحديد بيانات العمود الذي تريد تقسيمه بناءً عليه، ثم انقر موافق. شاهد لقطة الشاشة:
split data into worksheets with vba code to select data range

5. يتم تقسيم جميع البيانات في ورقة العمل النشطة إلى أوراق عمل متعددة بناءً على قيم العمود. يتم تسمية الأوراق الناتجة وفقًا للقيم في الخلايا المقسمة وتوضع في نهاية المصنف. شاهد لقطة الشاشة:
split data into worksheets with vba code to get the result

 

تقسيم البيانات إلى أوراق عمل متعددة بناءً على قيمة العمود باستخدام Kutools لـ Excel

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

ملاحظة: لتطبيق هذه الميزة ل تقسيم البيانات، يجب عليك أولاً تنزيل Kutools لـ Excel، ثم تطبيق الميزة بسرعة وسهولة.

بعد تثبيت Kutools لـ Excel، حدد نطاق البيانات، ثم انقر فوق Kutools Plus > تقسيم البيانات لفتح مربع الحوار تقسيم البيانات إلى أوراق عمل متعددة.

  1. حدد خيار العمود المحدد في قسم التقسيم بناءً على، واختر قيمة العمود الذي تريد تقسيم البيانات بناءً عليه من القائمة المنسدلة.
  2. إذا كانت بياناتك تحتوي على رؤوس وتريد إدراجها في كل ورقة عمل مقسمة جديدة، يرجى التحقق من خيار البيانات تحتوي على رؤوس. (يمكنك تحديد عدد صفوف العناوين بناءً على بياناتك. على سبيل المثال، إذا كانت بياناتك تحتوي على عنوانين، يرجى كتابة 2.)
  3. ثم يمكنك تحديد أسماء أوراق العمل المقسمة، ضمن قسم أسماء أوراق العمل الجديدة، حدد قاعدة أسماء أوراق العمل من القائمة المنسدلة القواعد، يمكنك إضافة بادئة أو لاحقة لأسماء الأوراق أيضًا.
  4. انقر فوق موافق . شاهد لقطة الشاشة:
    split data into worksheets with kutools to set the operations

الآن، تم تقسيم البيانات في ورقة العمل إلى أوراق عمل متعددة في مصنف جديد.
split data into worksheets with kutools to get the result


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

أحيانًا، بدلاً من تقسيم البيانات إلى أوراق عمل متعددة، قد يكون من الأكثر فائدة تقسيم البيانات إلى مصنفات منفصلة بناءً على عمود رئيسي. إليك دليل خطوة بخطوة حول كيفية استخدام كود VBA لأتمتة عملية تقسيم البيانات إلى مصنفات متعددة بناءً على قيمة عمود معينة.

1. اضغط باستمرار على مفتاحي ALT + F11 لفتح نافذة Microsoft Visual Basic for Applications.

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

Sub SplitDataByColToWorkbooks()
    ' Updateby Extendoffice
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    Dim xTRg As Range
    Dim xVRg As Range
    Dim xWS As Workbook
    Dim savePath As String
    ' Set the directory to save new workbooks
    savePath = "C:\Users\AddinsVM001\Desktop\multiple files\" ' Modify this path as needed
    Application.DisplayAlerts = False
    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.Address(False, False)
    titlerow = xTRg.Row
    ws.Columns(vcol).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws.Cells(1, ws.Columns.Count), Unique:=True
    myarr = Application.Transpose(ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).Value)
    ws.Cells(1, ws.Columns.Count).Resize(ws.Cells(ws.Rows.Count, ws.Columns.Count).End(xlUp).Row).ClearContents
    For i = 2 To UBound(myarr)
        Set xWS = Workbooks.Add
        ws.Range(title).AutoFilter Field:=vcol, Criteria1:=myarr(i)
        ws.Range("A" & titlerow & ":A" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Copy
        xWS.Sheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteAll
        xWS.SaveAs Filename:=savePath & myarr(i) & ".xlsx"

        xWS.Close SaveChanges:=False
    Next i
    ws.AutoFilterMode = False
    Application.DisplayAlerts = True
    ws.Activate
End Sub
ملاحظة: في الكود أعلاه، يجب أن تقوم بتغيير مسار الملف الخاص بك حيث سيتم حفظ المصنفات المقسمة في هذا البرنامج النصي: savePath = "C:\Users\AddinsVM001\Desktop\multiple files\".

3. بعد ذلك، اضغط F5 لتشغيل الكود، وسيظهر مربع منبثق لتذكيرك بتحديد صف الرأس، وبعد ذلك، انقر موافق. شاهد لقطة الشاشة:
split data into workbooks with vba code to select header row

4. في المربع المنبثق الثاني، يرجى تحديد بيانات العمود الذي تريد تقسيمه بناءً عليه، ثم انقر موافق. شاهد لقطة الشاشة:
split data into workbooks with vba code to select data range

5. بعد التقسيم، يتم تقسيم جميع البيانات في ورقة العمل النشطة إلى مصنفات متعددة بناءً على قيم العمود. يتم حفظ جميع المصنفات المقسمة في المجلد الذي حددته. شاهد لقطة الشاشة:
split data into workbooks with vba code to get the result

مقالات ذات صلة:

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

أفضل أدوات الإنتاجية لمكتب العمل

🤖 Kutools AI Aide: أحدث ثورة في تحليل البيانات من خلال: التنفيذ الذكي |توليد الشيفرة |إنشاء الصيغ المخصصة |تحليل البيانات وتوليد الرسوم البيانية |استدعاء الوظائف المحسنة
الميزات الشائعة: البحث، تمييز أو وضع علامة على المكررات | حذف الصفوف الفارغة | دمج الأعمدة أو العنوان دون فقدان البيانات | تقريب ...
بحث متقدم: بحث V متعدد المعايير | بحث V متعدد القيم | بحث في عدة ورقات | مطابقة غامضة ....
قائمة منسدلة متقدمة: إنشاء قائمة منسدلة بسرعة | قائمة منسدلة تابعة | قائمة منسدلة متعددة الاختيار ....
إدارة الأعمدة: إضافة عدد محدد من الأعمدة | نقل الأعمدة | تبديل حالة إظهار الأعمدة المخفية | مقارنة النطاق والأعمدة ...
ميزات مميزة: التركيز على الشبكة | عرض التصميم | شريط الصيغ المحسن | أدوات المصنف & أدوات الورقة العمل | مكتبة النص التلقائي (Auto Text) | منتقي التاريخ | دمج البيانات | تشفير/فك تشفير الخلايا | إرسال البريد الإلكتروني حسب القائمة | مرشح متقدم | تصفية خاصة (تصفية الخلايا التي تحتوي على خط عريض/مائل/يتوسطه خط...) ...
أفضل15 مجموعة أدوات:12 أداة نصية (إضافة نص، حذف الأحرف المحددة، ...) | أكثر من50 نوع من الرسوم البيانية (مخطط جانت، ...) | أكثر من40 صيغة عملية (حساب العمر بناءً على تاريخ الميلاد، ...) |19 أداة إدراج (إدراج رمز الاستجابة السريعة، إدراج صورة من المسار، ...) |12 أداة تحويل (تحويل إلى كلمات، تحويل العملة، ...) |7 أدوات دمج وتقسيم (دمج متقدم للصفوف، تقسيم الخلايا، ...) | ... والمزيد

عزز مهاراتك في Excel مع Kutools لـ Excel، واختبر الكفاءة كما لم يحدث من قبل. Kutools لـ Excel يقدم أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...


Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير

  • تمكين تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint.
  • افتح وأنشئ عدة مستندات في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ منفصلة.
  • يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات بالماوس يومياً!