ما هي مصفوفة VBA في Excel وكيفية البرمجة الأولى

كان VBA(VBA) جزءًا من مجموعة Microsoft Office لسنوات عديدة. على الرغم من أنه لا يحتوي على الوظائف والقوة الكاملة لتطبيق VB الكامل ، إلا أن VBA يوفر لمستخدمي Office المرونة لدمج منتجات Office وأتمتة العمل الذي تقوم به فيها.

واحدة من أقوى الأدوات المتوفرة في VBA هي القدرة على تحميل نطاق كامل من البيانات في متغير واحد يسمى المصفوفة. عن طريق تحميل البيانات بهذه الطريقة ، يمكنك معالجة أو إجراء عمليات حسابية على هذا النطاق من البيانات بعدة طرق.

إذن ما هي مجموعة VBA ؟ في هذه المقالة سوف نجيب على هذا السؤال ، ونوضح لك كيفية استخدام واحد في برنامج VBA النصي الخاص بك(your own VBA script) .

ما هي مصفوفة VBA؟

يعد استخدام مصفوفة VBA في (VBA)Excel أمرًا بسيطًا للغاية ، لكن فهم مفهوم المصفوفات يمكن أن يكون معقدًا بعض الشيء إذا لم تستخدم واحدة من قبل.

فكر(Think) في مصفوفة مثل صندوق به أقسام بداخله. المصفوفة أحادية البعد عبارة عن صندوق به سطر واحد من الأقسام. المصفوفة ثنائية الأبعاد عبارة عن صندوق به سطرين من الأقسام.

يمكنك وضع البيانات في كل قسم من هذا "الصندوق" بأي ترتيب تريده.

في بداية برنامج VBA النصي الخاص بك ، تحتاج إلى تعريف هذا "المربع" من خلال تحديد مجموعة VBA الخاصة بك . لذلك لإنشاء مصفوفة يمكنها الاحتفاظ بمجموعة واحدة من البيانات (مصفوفة ذات بُعد واحد) ، يمكنك كتابة السطر التالي.

Dim arrMyArray(1 To 6) As String

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

arrMyArray(1) = "Ryan Dube"

يمكنك إنشاء مصفوفة ثنائية الأبعاد باستخدام السطر التالي.

Dim arrMyArray(1 To 6,1 to 2) As Integer

الرقم الأول يمثل الصف والثاني هو العمود. لذلك يمكن أن تحتوي المصفوفة أعلاه على نطاق مكون من 6 صفوف وعمودين.

يمكنك تحميل أي عنصر من هذه المصفوفة بالبيانات على النحو التالي.

arrMyArray(1,2) = 3

سيؤدي هذا إلى تحميل 3 في الخلية B1.

يمكن أن تحتوي المصفوفة على أي نوع من البيانات كمتغير عادي ، مثل السلاسل النصية والمنطقية والأعداد الصحيحة والعوامات والمزيد.

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

كيفية برمجة صفيف VBA في Excel

دعنا نلقي نظرة على برنامج بسيط حيث قد ترغب في تحميل معلومات من جدول بيانات إلى مصفوفة متعددة الأبعاد.

كمثال ، دعنا نلقي نظرة على جدول بيانات مبيعات المنتج ، حيث تريد سحب اسم مندوب المبيعات والعنصر وإجمالي المبيعات من جدول البيانات.

لاحظ أنه في VBA عند الرجوع إلى صفوف أو أعمدة ، يمكنك حساب الصفوف والأعمدة(rows and columns) بدءًا من أعلى اليسار عند 1. وبالتالي فإن عمود مندوب هو 3 وعمود العنصر 4 وعمود الإجمالي هو 7.

لتحميل هذه الأعمدة الثلاثة في جميع الصفوف الأحد عشر ، ستحتاج إلى كتابة البرنامج النصي التالي.

Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i

ستلاحظ أنه من أجل تخطي صف الرأس ، يجب أن يبدأ رقم الصف في أول نظرة عند 2 بدلاً من 1. وهذا يعني أنك بحاجة إلى طرح 1 لقيمة صف الصفيف عند تحميل قيمة الخلية في المصفوفة باستخدام الخلايا(Cells) (i، j). القيمة.

مكان إدراج البرنامج النصي لصفيف VBA الخاص بك(Your VBA Array Script)

لوضع برنامج نصي VBA في (VBA)Excel ، تحتاج إلى استخدام محرر VBA . يمكنك الوصول إلى هذا عن طريق تحديد قائمة المطور(Developer) وتحديد عرض الرمز(View Code) في قسم عناصر التحكم(Controls) في الشريط.

إذا كنت لا ترى المطور(Developer) في القائمة ، فستحتاج إلى إضافته. للقيام بذلك ، حدد ملف(File) وخيارات لفتح نافذة خيارات Excel .(Options)

قم بتغيير أوامر الاختيار من القائمة المنسدلة إلى كافة الأوامر(All Commands) . حدد Developer من القائمة اليسرى وحدد الزر " إضافة(Add) " لنقله إلى الجزء الأيمن. حدد خانة الاختيار لتمكينه وحدد موافق(OK) للإنهاء.

عند فتح نافذة Code Editor ، تأكد من تحديد الورقة التي توجد بها بياناتك في الجزء الأيمن. حدد ورقة العمل(Worksheet) في القائمة المنسدلة اليسرى وتفعيل(Activate) في اليمين. سيؤدي هذا إلى إنشاء روتين فرعي جديد يسمى Worksheet_Activate ().

سيتم تشغيل هذه الوظيفة متى تم فتح ملف جدول البيانات. الصق الكود في جزء البرنامج النصي داخل هذا الروتين الفرعي.

سيعمل هذا البرنامج النصي من خلال الصفوف الـ 12 وسيعمل على تحميل اسم مندوب من العمود 3 ، والعنصر من العمود 4 ، وإجمالي البيع من العمود 7.

بمجرد الانتهاء من كلتا حلقتين For ، فإن المصفوفة ثنائية الأبعاد arrMyArray تحتوي على جميع البيانات التي حددتها من الورقة الأصلية.

معالجة المصفوفات في Excel VBA

لنفترض أنك تريد تطبيق ضريبة مبيعات بنسبة 5٪ على جميع أسعار البيع النهائية ، ثم كتابة جميع البيانات في ورقة جديدة.

يمكنك القيام بذلك عن طريق إضافة حلقة For أخرى بعد الأولى ، مع أمر لكتابة النتائج إلى ورقة جديدة.

For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k

سيؤدي هذا إلى "تفريغ" المصفوفة بأكملها في الورقة 2(Sheet2) ، مع وجود صف إضافي يحتوي على الإجمالي مضروبًا في 5٪ لمبلغ الضريبة.

ستبدو الورقة الناتجة هكذا.

كما ترى ، تعد مصفوفات VBA في (VBA)Excel مفيدة للغاية ومتعددة الاستخدامات مثل أي خدعة أخرى في Excel(any other Excel trick)

المثال أعلاه هو استخدام بسيط للغاية للمصفوفة. يمكنك إنشاء مصفوفات أكبر بكثير وإجراء الفرز أو المتوسط ​​أو العديد من الوظائف الأخرى مقابل البيانات التي تخزنها فيها.

إذا كنت ترغب في الحصول على إبداع حقيقي ، يمكنك حتى إنشاء صفيفين يحتويان على نطاق من الخلايا(containing a range of cells) من ورقتين مختلفتين ، وإجراء عمليات حسابية بين عناصر كل مجموعة.

التطبيقات محدودة فقط بخيالك.



About the author

"أنا خبير مستقل في Windows و Office. لدي أكثر من 10 سنوات من الخبرة في العمل باستخدام هذه الأدوات ويمكنني مساعدتك في تحقيق أقصى استفادة منها. تشمل مهاراتي: العمل مع Microsoft Word و Excel و PowerPoint و Outlook ؛ إنشاء الويب الصفحات والتطبيقات ؛ ومساعدة العملاء على تحقيق أهداف أعمالهم. "



Related posts