واحدة من أقوى الأدوات تتوفر في VBA القدرة على تحميل مجموعة كاملة من البيانات في متغير واحد يسمى صفيف. عن طريق تحميل البيانات بهذه الطريقة ، يمكنك معالجة أو إجراء العمليات الحسابية على هذا النطاق من البيانات بعدة طرق.
فما هي صفيف VBA؟ في هذه المقالة ، سنجيب على هذا السؤال ، وسنريك كيفية استخدام واحد في النصي VBA الخاص بك.
ما هي صفيف VBA؟
باستخدام VBA الصفيف في Excel بسيط للغاية ، لكن فهم مفهوم الصفائف يمكن أن يكون معقدًا بعض الشيء إذا لم تستخدمه مطلقًا.
فكر في صفيف مثل مربع به أقسام بداخله. صفيف أحادي البعد عبارة عن مربع به سطر واحد من الأقسام. المصفوفة ثنائية الأبعاد عبارة عن مربع به سطرين من الأقسام.
يمكنك وضع البيانات في كل قسم من "المربع" هذا بأي ترتيب تريده.
In_content_1 الكل: [300 × 250] / DFP: [640x360]قبل>->في بداية برنامج 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 عند الإشارة إلى الصفوف أو الأعمدة ، يمكنك حساب الصفوف و الأعمة بدءًا من أعلى اليسار في 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
ستلاحظ أنه من أجل تخطي صف الرأس ، يجب أن يبدأ رقم الصف في الأول من أجل Look في 2 بدلاً من 1. هذا يعني أنك بحاجة إلى طرح 1 لقيمة صف الصفيف عند قيامك بتحميل قيمة الخلية في الصفيف باستخدام Cells (i، j) .Value.
مكان إدراج نص صفيف VBA
لوضع برنامج نصي VBA في Excel ، تحتاج إلى استخدام محرر VBA. يمكنك الوصول إلى هذا عن طريق تحديد قائمة Developerوتحديد عرض الرمزفي قسم عناصر التحكم في الشريط.
إذا كنت لا ترى المطور في القائمة ، فستحتاج إلى أضفه للقيام بذلك ، حدد ملفو خياراتلفتح نافذة خيارات Excel.
تغيير أوامر الاختيار من القائمة المنسدلة إلى جميع الأوامر. حدد Developerمن القائمة اليمنى وحدد الزر إضافةلنقله إلى الجزء الأيمن. حدد مربع الاختيار لتمكينه وحدد موافقللإنهاء.
عند فتح نافذة Code Editor ، تأكد من تحديد الورقة الموجودة في بياناتك في الجزء الأيمن. حدد ورقة العملفي القائمة المنسدلة اليمنى و تنشيطفي اليمين. سيؤدي هذا إلى إنشاء روتين فرعي جديد يسمى Worksheet_Activate ().
سيتم تشغيل هذه الوظيفة عند فتح ملف جدول البيانات. الصق الشفرة في جزء البرنامج النصي داخل هذا الروتين الفرعي.
سيعمل هذا البرنامج النصي خلال الصفوف 12 وسيحمل اسم مندوب من العمود 3 والعنصر من العمود 4 وإجمالي عمليات البيع من العمود 7.
بمجرد الانتهاء من كلا الحلقات ، صفيف ثنائي الأبعاد يحتوي arrMyArray على جميع البيانات التي حددتها من الورقة الأصلية.
معالجة المصفوفات في Excel VBA
لنفترض أنك تريد تطبيق ضريبة مبيعات بنسبة 5٪ على جميع أسعار البيع النهائية ، ثم اكتب جميع البيانات في ورقة جديدة.
يمكنك القيام بذلك عن طريق إضافة حلقة أخرى بعد الأولى ، مع أمر لكتابة النتائج إلى ورقة جديدة.
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 ، مع صف إضافي يحتوي على الإجمالي مضروبًا بنسبة 5٪ لمبلغ الضريبة.
ستبدو الورقة الناتجة بهذا الشكل.
كما ترون ، تعد صفيفات VBA في Excel مفيدة للغاية ومتعددة الاستخدامات مثل أي خدعة إكسل أخرى.
المثال أعلاه هو استخدام بسيط للغاية لصفيف. يمكنك إنشاء صفائف أكبر كثيرًا وأداء الفرز أو المتوسط أو العديد من الوظائف الأخرى مقابل البيانات التي تخزنها فيها.
إذا كنت ترغب في الحصول على إبداع حقيقي ، فيمكنك حتى إنشاء صفيفين يحتوي على مجموعة من الخلايا من ورقتين مختلفتين ، وإجراء حسابات بين عناصر كل صفيف.
التطبيقات محدودة فقط بخيالك.