الانضمام إلى VBA | أمثلة خطوة بخطوة على وظيفة الانضمام إلى Excel VBA

على غرار ما لدينا في ورقة العمل كوظيفة Concatenate والأمر & الذي يتم استخدامه لربط سلسلتين أو أكثر معًا ، في VBA نستخدم الأمر Join للقيام بذلك ، في Join in VBA ، نأخذ مصدر البيانات في مصفوفة ومثل التسلسل نستخدم محددًا للانضمام إليهم.

وظيفة Excel VBA JOIN

كما يوحي الاسم نفسه ، يتم استخدام وظيفة VBA JOIN لربط مجموعة من السلاسل الفرعية مع المحدد المحدد. إذا لم نحدد أي محدد ، فسيأخذ "مسافة" كحرف محدد افتراضي. إنها تقوم بنفس العمل الذي تقوم به وظيفة Concatenate في Excel باستثناء أنه يتعين علينا تحديد حرف محدد مرة واحدة فقط ، بينما في وظيفة Concatenate ، يتعين علينا تحديد حرف محدد في كل مرة بين كل سلسلتين.

صيغة الوظيفة هي

كما نرى ، تأخذ الدالة وسيطين وتعيد سلسلة نصية. الحجج هي:

  1. SourceArray : نحن بحاجة إلى تحديد أو إعطاء إشارة إلى مصفوفة من السلاسل الفرعية التي سيتم ضمها.
  2. محدد : يستخدم محدد لفصل كل من سلاسل فرعية عند إنشاء تؤلف سلسلة الناتجة. نظرًا لأن هذه حجة اختيارية ، إذا حذفناها ، فسيتم تعيين المحدد ليكون مسافة "".

وظيفة VBA SPLIT هي وظيفة عكسية تمامًا لوظيفة VBA JOIN.

أمثلة على وظيفة الانضمام إلى VBA

فيما يلي أمثلة على وظيفة الانضمام في Excel VBA.

يمكنك تنزيل VBA Join Function Excel Template هنا - VBA Join Function Excel Template

انضمام VBA - المثال رقم 1

لنفترض أننا نريد الانضمام إلى الاسم الأول (راميش) والوسطى (كومار) والاسم الأخير (ميشرا).

ستكون الخطوات:

  • أولاً ، نحتاج إلى فتح محرر Visual Basic. يمكننا أن نفعل الشيء نفسه عن طريق النقر فوق أمر 'Visual Basic' في مجموعة 'Code' ضمن علامة التبويب 'Developer' excel أو يمكننا استخدام مفتاح اختصار excel Alt + F11 .

  • أدخل الوحدة بالنقر بزر الماوس الأيمن على "ورقة 1" واختيار أمر "إدراج" من القائمة السياقية ثم اختر "وحدة" لإدراجها.

  • قم بإنشاء روتين فرعي باسم "JoinName".

رمز:

 اسم الانضمام الفرعي () End Sub 

  • استخدم وظيفة JOIN كما يلي

رمز:

 نطاق الانضمام () الفرعي ("D2"). القيمة = انضمام (صفيف ("راميش" ، "كومار" ، "ميشرا")) نهاية فرعية 

يمكننا أن نرى أننا استخدمنا وظيفة ARRAY لتوفير SourceArray لوظيفة JOIN وتم تخطيها لتحديد حرف المحدد بحيث تكون "space" حرفًا افتراضيًا. ستتم كتابة القيمة المعالجة لوظيفة JOIN في الخلية D2 عندما ننفذ هذا الرمز باستخدام المفتاح F5 أو يدويًا.

انضمام VBA - المثال رقم 2

لنفترض أننا نريد إنشاء ملفات Excel مختلفة مع اسم العنصر الذي يحتوي على مبيعات لهذا العنصر فقط.

  • افتح محرر Visual Basic باستخدام مفتاح الاختصار Alt + F11.
  • انقر بزر الماوس الأيمن على ورقة 'Sheet1 ′ (مثال 2)' لفتح القائمة السياقية وانقر فوق 'Insert' لإدراج VBA 'Module' في مشروع VBA.

  • حدد روتينًا فرعيًا باسم "CreateItemSoldFiles".

رمز:

 CreateItemSoldFiles () الفرعية End Sub 

  • نحتاج إلى تعيين مرجع إلى مكتبة كائنات "Microsoft Scripting Runtime" باستخدام قائمة الأدوات -> الأمر المراجع ... ، حيث سنستخدم بعض التعليمات البرمجية (الكائنات) ، والتي لن تعمل إذا لم يتم تضمين مكتبة الكائنات هذه.

  • الآن سوف نعلن عن جميع المتغيرات.

رمز:

 خافت FSO كبرنامج نصي جديد

يتيح متغير FSO أعلاه الوصول إلى VBA FileSystemObject. بعد الربط ، يمكننا استخدام وظائف مثل BuildPath و CopyFile و CreateTextFile وما إلى ذلك.

  • العبارة التالية تنشئ كائن TextStream. من خلال كائن TextStream ، يمكننا القراءة من الملف الأصلي أو الإلحاق به.

رمز:

 خافت FSO كبرنامج نصي جديد

  • سوف نعلن المزيد من المتغيرات. يستخدم الحرف "r" للاحتفاظ بالصفوف في النطاق ، و "fs" لتخزين السلسلة المرتبطة النهائية ، و "cols" لتخزين عدد الأعمدة في النطاق ، و "FolPath" لتخزين مسار المجلد حتى نتمكن من حفظ الملفات في المجلد و "Items_Sold" لتخزين أسماء عناصر مختلفة لإنشاء ملف بهذه الأسماء.

رمز:

 Dim r كنطاق Dim fs مثل String Dim cols as Integer Dim FolPath as String Dim Items_Sold as String 

  • لحساب العدد الإجمالي للأعمدة في النطاق ، سنحدد العبارة التالية.

رمز:

cols = Range ("A1"). CurrentRegion.Columns.Count

سيحدد هذا البيان أولاً المنطقة الحالية للخلية A1 ثم يحسب العدد الإجمالي للأعمدة في المنطقة الحالية.

  • سنكتب العبارات التالية لتعيين مسار متغير "FolPath" باستخدام وظيفة VBA ENVIRON وعامل السلسلة Concatenation Operator.

رمز:

FolPath = Environ ("UserProfile") & "\ Desktop \ Items_Sold" إذا لم يكن FSO.FolderExists (FolPath) ثم FSO.CreateFolder FolPath

ستقوم العبارة الثانية بإنشاء المجلد إذا لم يكن المجلد موجودًا في نفس الموقع.

  • سيقوم هذا الرمز بتعيين قيم العمود B واحدًا تلو الآخر إلى "Items_Sold" لقد استخدمنا "دالة OFFSET" للحصول على مرجع الخلية في العمود B حيث أن الخلية المحددة حاليًا موجودة في العمود A.

رمز:

Items_Sold = r الإزاحة (0، 1) القيمة

  • سيفتح بيان الحدود التالي الملفات ذات الأسماء المخزنة في متغير "Items_Sold" واحدًا تلو الآخر في وضع الإلحاق (سيتم إلحاق القيم الجديدة أخيرًا).

رمز:

 قم بتعيين ts = FSO.OpenTextFile (FolPath & "\" & Items_Sold & ".xls" ، ForAppending ، True)

لقد استخدمنا عامل التشغيل Concatenate مع المتغيرات "FolPath" و "Items_Sold" والقيم الثابتة ("\" و ".xls") لإنشاء أسماء ملفات لملفات Excel.

  • نحتاج إلى أن نضع في اعتبارنا أن دالة VBA JOIN تأخذ مصفوفة أحادية البعد فقط مثل SourceArray لتحويل الصفوف إلى مصفوفة أحادية البعد ، نحتاج إلى استخدام طريقة Application.Transpose مرتين.

رمز:

fs = Join (Application.Transpose (Application.Transpose (r.Resize (1، cols) .Value))، vbTab)

لقد استخدمنا طريقة تغيير الحجم لكائن النطاق لتغيير حجم النطاق إلى عرض عدد من الأعمدة في النطاق.

كمحدد ، استخدمنا الكلمة الأساسية "vbTab" بحيث يتم تعبئة القيم في خلايا مختلفة.

  • نظرًا لأننا قمنا بتخزين القيمة المعالجة لوظيفة JOIN في متغير 'fs' ، فسنكتب قيم fs في أسطر جديدة من ملفات Excel التي تم إنشاؤها بواسطة VBA لكل صف في ملفنا الأصلي من الصف رقم 2 إلى الصف الأخير (في حالتنا هو هو الصف 350).

  • قبل إنهاء الحلقة ، سنغلق الملف المفتوح. سيكون الرمز كما هو موضح في لقطة الشاشة.

لقد كتبنا الكود الكامل الآن.

رمز:

فرعي CreateItemSoldFiles () Dim FSO كبرنامج نصي جديد.FileSystemObject Dim ts كـ Scripting.TextStream Dim r كنطاق باهت fs مثل String Dim cols as String Dim FolPath as String Dim Items_Sold As String cols = Range ("A1"). CurrentRegion.Columns. Count FolPath = Environ ("UserProfile") & "\ Desktop \ Items_Sold" إذا لم يكن FSO.FolderExists (FolPath) ثم FSO.CreateFolder FolPath لكل r في النطاق ("A2" ، النطاق ("A1"). End (xlDown) ) Items_Sold = r.Offset (0، 1). مجموعة القيمة ts = FSO.OpenTextFile (FolPath & "\" & Items_Sold & ".xls"، ForAppending، True) fs = Join (Application.Transpose (Application.Transpose (r .Resize (1، cols) .Value))، vbTab) ts.WriteLine fs ts. Close Next r End Sub

الآن لتنفيذ الكود ، سنضغط على F5 ثم ، يمكننا أن نرى أنه تم إنشاء مجلد باسم 'Items_Sold' بمساعدة كود VBA على سطح المكتب.

يوجد في المجلد 7 ملفات فريدة تم إنشاؤها بأسماء العنصر ويمكننا اكتشاف تفاصيل حول هذا العنصر المحدد فقط في الملفات.

كمبيوتر محمول. xls

أشياء يجب تذكرها حول وظيفة VBA JOIN

  • و SourceArray يجب أن تكون مجموعة واحدة الأبعاد. لا يمكننا الإشارة إلى خلية فردية ، حيث سيؤدي ذلك إلى إنشاء مصفوفات متعددة الأبعاد.
  • إذا حددنا سلسلة نصية ذات طول صفري ("") كمحدد ، فسيتم ربط جميع العناصر في المصفوفة بدون محددات.

$config[zx-auto] not found$config[zx-overlay] not found