البرمجة

تحليل الجداول في VBA

فيما يلي كود VBA يقوم بالعملية التي تريدها:

vba
Sub BuildCommaSeparatedList() Dim ws As Worksheet Dim tableRange As Range Dim outputCell As Range Dim col As Integer Dim row As Integer Dim headersRange As Range Dim header As Range Dim commaSeparatedList As String ' تعيين الورقة التي تحتوي على الجدول Set ws = ThisWorkbook.Sheets("Sheet1") ' ضع اسم الورقة الخاصة بك هنا ' تعيين نطاق الجدول Set tableRange = ws.Range("A1").CurrentRegion ' يفترض أن الجدول يبدأ من الخلية A1 ' تعيين الخلية التي ستحتوي على الناتج Set outputCell = ws.Range("E1") ' ضع الخلية التي تريد وضع الناتج فيها هنا ' حلقة على أعمدة الجدول For col = 1 To tableRange.Columns.Count ' إعادة تعيين القائمة المفصولة بالفواصل commaSeparatedList = "" ' تحديد العناوين للفحص Set headersRange = tableRange.Rows(1) ' حلقة على الصفوف For row = 2 To tableRange.Rows.Count ' فحص الخلية إذا كانت تحتوي على 1 If tableRange.Cells(row, col).Value = 1 Then ' إضافة العنوان إلى القائمة المفصولة بالفواصل If commaSeparatedList = "" Then commaSeparatedList = headersRange.Cells(1, col).Value Else commaSeparatedList = commaSeparatedList & ", " & headersRange.Cells(1, col).Value End If End If Next row ' إذا تم العثور على أي عناوين، وضع القائمة المفصولة بالفواصل في الخلية المخصصة If commaSeparatedList <> "" Then outputCell.Value = outputCell.Value & IIf(outputCell.Value = "", "", ", ") & commaSeparatedList End If ' الانتقال إلى الصف القادم Set outputCell = outputCell.Offset(1, 0) Next col End Sub

هذا الكود يفترض أن الجدول يبدأ في الخلية A1 وأن العناوين الخاصة بالأعمدة توجد في الصف الأول. يتم بناء القائمة المفصولة بالفواصل في الخلية E1 ويتم استخدام الخلية F1 وما بعدها لتخزين القوائم المفصولة بالفواصل لكل صف على حده.

قم بتغيير اسم الورقة والخلايا حسب احتياجاتك.

المزيد من المعلومات

هذا الكود يعتمد على مفهومين رئيسيين في VBA:

  1. الحلقات (Loops): يستخدم الكود حلقتين، حلقة خارجية لتكرار العملية على كل عمود في الجدول، وحلقة داخلية للتحقق من قيم الخلايا في العمود الحالي.

  2. الشروط (Conditions): يستخدم الكود بناء شرطين، الأول للتحقق مما إذا كانت قيمة الخلية تساوي 1، والثاني للتحقق مما إذا كان هناك عناوين تم إضافتها إلى القائمة المفصولة بالفواصل.

كما يمكنك أيضًا ملاحظة بعض النقاط الأخرى في الكود:

  • تم استخدام المتغيرات ws و tableRange و outputCell و headersRange لتحديد الورقة ونطاق الجدول والخلية المخرجة ونطاق العناوين على التوالي.
  • تم استخدام الدالة IIf لإدراج فاصلة بين العناوين في القائمة المفصولة بالفواصل.
  • تم استخدام الدالة Offset للانتقال إلى الصف القادم بعد الانتهاء من تكوين القائمة للصف الحالي.

إذا كنت بحاجة إلى أي معلومات إضافية أو لديك أي استفسارات حول هذا الكود، فلا تتردد في طرحها!

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

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!