فبا: كيفية استبدال الأحرف في سلسلة
يمكنك استخدام الأسلوب Replace() في VBA لاستبدال الأحرف في سلسلة.
تستخدم هذه الطريقة بناء الجملة الأساسي التالي:
استبدال (التعبير، البحث، الاستبدال، البدء، العد)
ذهب:
- التعبير : السلسلة التي تريد استبدال الأحرف فيها
- find : السلسلة المراد العثور عليها
- استبدال : السلسلة التي سيتم استخدامها كبديل
- start ( اختياري ) : موضع البداية في السلسلة المراد البحث عنها
- العد ( اختياري ) : عدد عمليات الاستبدال المطلوب تنفيذها
توضح الأمثلة التالية كيفية استخدام هذه الطريقة عمليًا مع قائمة السلاسل التالية في Excel:
مثال 1: استخدم VBA لاستبدال كافة تكرارات الأحرف في سلسلة (حساسة لحالة الأحرف)
لنفترض أننا نريد استبدال “هذا” بـ “ذلك” في كل سلسلة.
يمكننا إنشاء الماكرو التالي للقيام بذلك:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(Range(" A " & i), " this ", " THAT ") Next i End Sub
عندما نقوم بتشغيل هذا الماكرو، نحصل على الإخراج التالي:
يعرض العمود B كل سلسلة من السلاسل الموجودة في العمود A، مع استبدال كل تكرار لـ “هذا” بـ “THAT”.
لاحظ أن هذا الاستبدال حساس لحالة الأحرف .
أي أنه يتم استبدال كل تواجد لـ “هذا” ولكن يتم ترك كل تواجد لـ “هذا” بمفرده.
المثال 2: استخدم VBA لاستبدال كافة تكرارات الأحرف في سلسلة (غير حساس لحالة الأحرف)
لنفترض أننا نريد استبدال “هذا” (بغض النظر عن الحالة) بـ “ذلك” في كل سلسلة.
يمكننا إنشاء الماكرو التالي للقيام بذلك:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ") Next i End Sub
عندما نقوم بتشغيل هذا الماكرو، نحصل على الإخراج التالي:
يعرض العمود B كل سلسلة من السلاسل الموجودة في العمود A، مع استبدال كل تكرار لـ “هذا” بـ “THAT”.
لاحظ أن هذا الاستبدال ليس حساسًا لحالة الأحرف .
أي أنه يتم استبدال كل تكرار لكلمة “هذا” (سواء كانت مكتوبة بأحرف كبيرة أم لا).
تمكنا من إجراء هذا الاستبدال غير الحساس لحالة الأحرف باستخدام طريقة LCase لتحويل كل سلسلة في العمود A أولاً إلى أحرف صغيرة قبل البحث عن “هذا” في كل سلسلة.
مثال 3: استخدم VBA لاستبدال أول N من الأحرف في سلسلة
لنفترض أننا نريد استبدال التواجد الأول فقط لـ “هذا” (بغض النظر عن الحالة) بـ “THAT” في كل سلسلة.
يمكننا إنشاء الماكرو التالي للقيام بذلك:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ", Count:=1) Next i End Sub
عندما نقوم بتشغيل هذا الماكرو، نحصل على الإخراج التالي:
يعرض العمود B كل سلسلة من السلاسل الموجودة في العمود A مع استبدال التواجد الأول لـ “هذا” بـ “THAT”.
لاحظ أننا استخدمنا Count:=1 لاستبدال التكرار الأول لسلسلة معينة فقط، ولكن يمكنك استبدال 1 بأي قيمة تريد استبدال التكرارات الأولى n لسلسلة معينة.
ملاحظة : يمكنك العثور على الوثائق الكاملة لطريقة استبدال VBA هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى باستخدام VBA:
فبا: كيفية حساب تكرارات الأحرف في سلسلة
VBA: كيفية التحقق مما إذا كانت السلسلة تحتوي على سلسلة أخرى
VBA: كيفية حساب الخلايا التي تحتوي على نص معين