كيفية ReDim Preserve صفيف ثنائي الأبعاد في Excel VBA (طريقتان سهلتان)

Hugh West

المصفوفة هي متغير يحتفظ بنفس أنواع البيانات. إذا كان هناك صف واحد فقط أو عمود واحد من البيانات ، فإنه يُعرف بالصفيف أحادي البعد. ومع ذلك ، عندما يكون هناك أكثر من صف وعمود ، يطلق عليه صفيف ثنائي الأبعاد. نستخدم ReDim لتغيير حجم مصفوفة في VBA. بالإضافة إلى ذلك ، نستخدم الحفاظ على الكلمة الأساسية مع ReDim للحفاظ على البيانات القديمة سليمة. ستعرض لك هذه المقالة 2 ​​ طرقًا سريعة لـ " ReDim Preserve " a 2D array في Excel VBA .

تنزيل المصنف التدريبي

ماكرو لـ ReDim Preserve 2D.xlsm

2 طرق مفيدة ReDim Preserve 2D Array في Excel VBA

هذه هي مجموعة البيانات الأساسية التي تم إنشاؤها من صفيف ثنائي الأبعاد بثلاثة صفوف وعمودين. أولاً ، سننشئ هذه المجموعة. بعد ذلك ، سنضيف عمودًا آخر إلى هذه المصفوفة. سنستخدم " ReDim Preserve " للقيام بذلك. بالإضافة إلى ذلك ، سوف نوضح ما يحدث إذا لم نستخدم هذا.

افتراضيًا ، يمكننا فقط تغيير حجم البعد الأخير من المصفوفة (أي الأعمدة أو الحد العلوي). سنقوم بنقل المصفوفة ، ثم نغير البعد الأخير ، ثم نغيرها مرة أخرى لتغيير حجم كلا البعدين للمصفوفة ثنائية الأبعاد في Excel VBA.

1 ReDim Preserve Last Dimension 2D Array

سنقوم أولاً بتعريف المصفوفة ثنائية الأبعاد على أنها ديناميكية. بعد ذلك ، باستخدام العبارة ReDim ، سنقوم بإنشاء ملفصفيف مكون من ثلاثة صفوف وعمودين. أخيرًا ، سنستخدم العبارة ReDim مرة أخرى مع Preserve keyword قم بزيادة الحد الأعلى للمصفوفة ثنائية الأبعاد.

الخطوات:

  • لتبدأ ، اضغط على ALT + F11 لإظهار نافذة وحدة VBA . بدلاً من ذلك ، يمكنك القيام بذلك من علامة التبويب Developer ← حدد Visual Basic .
  • ثم ، من أدخل علامة التبويب ← حدد الوحدة . سنكتب رمز VBA هنا.

  • بعد ذلك ، اكتب الكود التالي في الوحدة النمطية نافذة.
4250

VBA Code Breakdown

  • أولاً ، نحن نتصل الإجراء الفرعي Redim_Preserve_2D_Array_Row ”.
  • ثم نعلن المتغير Our_Array كمصفوفة ديناميكية.
  • بعد ذلك ، نحدد حجم المصفوفة. الحد الأدنى هو 3 ، والحد الأعلى هو 2 ​​ ، وكلاهما يبدأ من 1 .
  • ثم نقوم بتعيين قيم للمصفوفة .
  • بعد ذلك ، نقوم بإدخال القيم إلى نطاق الخلايا C6: D8 .
  • بعد ذلك ، سوف ينفذ الكود.
  • لذا ، احفظ الوحدة الوحدة واضغط تشغيل .

  • نتيجة لذلك ، ستعيد القيم إلى نطاقات الخلايا المحددة. يمكننا أن نرى أن " Rachel " موجودة في الصف 1 والعمود 1 موضع ،والتي تم تعريفها على أنها ( 1،1 ) في كود VBA.

  • الآن ، سنقوم بتغيير حجم المصفوفة.
  • لذا ، أضف هذا إلى الكود السابق وقم بإزالة أول Range.Value statement . علاوة على ذلك ، كيف يبدو الكود كما يمكنك رؤيته من اللقطة أدناه.
7050

  • هنا ، قمنا بزيادة الحد الأعلى من ( 1 إلى 2 ​​ ) إلى ( 1 إلى 3 ) بواسطة 1 .
  • ثم أضفنا القيم إلى المصفوفة
  • الآن إذا قمنا بتنفيذ هذا الكود ، فسنرى لم يتم الاحتفاظ بالقيم السابقة. سيعود فارغًا للقيم السابقة.

  • الآن ، يمكننا إصلاح ذلك عن طريق إضافة الكلمة الأساسية الاحتفاظ في بيان ReDim .
  • أخيرًا ، سيكون الكود الكامل لدينا هو التالي.
3645

  • الآن ، إذا كنا قم بتشغيل هذا الرمز ، ثم سيكون الإخراج مثل هذا. وبالتالي ، سنقوم " ReDim Preserve " بالبعد الأخير لصفيف 2D في Excel VBA .. الآن ، ستوضح لك الطريقة التالية كيفية " ReDim الاحتفاظ بـ ”وتغيير حجم كلا بعدي المصفوفة.

اقرأ المزيد: VBA للحصول على فريد القيم من العمود إلى المصفوفة في Excel (3 معايير)

قراءات مماثلة

  • كيفية تسمية صفيف الجدول في Excel (باستخدام خطوات سهلة)
  • Excel VBA لقراءة ملف CSV في صفيف (4 أمثلة مثالية)
  • كيفية تحويل النطاق إلى مصفوفة في ExcelVBA (3 طرق)
  • Excel VBA: إزالة التكرارات من مصفوفة (مثالان)

2. ReDim الحفاظ على كلا البعدين مصفوفة ثنائية الأبعاد في Excel VBA

في هذه الطريقة النهائية ، سوف نعرض لك خطوات تغيير الحجم و " ReDim Preserve " 2D array . هنا ، سنستخدم الدالة VBA Transpose لتغيير حجم الحد الأدنى للصفيف. إذا حاولنا تغيير حجم الحد الأدنى للمصفوفة في الطريقة الأولى ، فسنرى الخطأ " منخفض خارج النطاق ". الآن ، دون مزيد من اللغط ، دعونا نرى كيف يمكننا إصلاح هذا وتحقيق هدفنا.

الخطوات:

  • أولاً ، كما هو موضح في الطريقة الأولى ، قم بإحضار الوحدة النمطية window.
  • ثانيًا ، أضف سطور التعليمات البرمجية التالية إلى الكود الأول.
6685
  • علاوة على ذلك ، يبدو رمز الطريقة النهائية على هذا النحو.
9888

تحليل رمز VBA

  • أولاً ، نحن نستدعي الإجراء الفرعي ReDim_Preserve_2D_Array_Both_Dimensions ” .
  • بعد ذلك ، باقي الرموز حتى وظيفة VBA Transpose هي نفسها كما في الكود الأول.
  • هنا ، نحن نقوم بنقل المصفوفة.
  • ثم نقوم بزيادة الحد الأعلى للمصفوفة.
  • بعد ذلك نقوم بنقل المصفوفة مرة أخرى. لذلك ، في النهاية سيغير الحد الأدنى.
  • بعد ذلك ، نقوم بإدخال قيم المصفوفة التي تم تغيير حجمها أثناءالحفاظ على البيانات القديمة.
  • أخيرًا ، نكتب القيم إلى نطاق الخلايا C6: E9 .
  • بعد هذا ، كما هو موضح في الطريقة الأولى ، تشغيل هذا الكود.
  • وبالتالي ، يمكننا تصور كيفية احتفاظ الكود بـ المصفوفة ثنائية الأبعاد باستخدام " ReDim Preserve " والوظيفة VBA Transpose .

اقرأ المزيد: VBA لتحويل المصفوفة في Excel (3 طرق)

أشياء يجب تذكرها

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

الخاتمة

لقد أوضحنا لك طريقتين سريعتين لـ " ReDim Preserve " a 2D array في Excel VBA. إذا واجهت أي مشاكل بخصوص هذه الأساليب أو كان لديك أي ملاحظات لي ، فلا تتردد في التعليق أدناه. علاوة على ذلك ، يمكنك زيارة موقعنا ExcelWIKI لمزيد من المقالات المتعلقة ببرنامج Excel. شكرا على القراءة ، استمر في التميز!

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