جدول المحتويات
يعد تطبيق VBA الطريقة الأكثر فعالية وسرعة وأمانًا لتشغيل أي عملية في Excel. في هذه المقالة ، سنوضح لك كيفية العثور على سلاسل معينة في سلسلة معينة أخرى باستخدام VBA في Excel.
تنزيل نموذج التدريب
أنت يمكنك تنزيل نموذج Excel التدريبي المجاني من هنا.
VBA للبحث في String.xlsm
InStr Function
يحتوي Microsoft Excel على وظيفة مضمنة تسمى وظيفة InStr للعثور على موضع سلاسل معينة في سلسلة معينة.
البنية العامة:
InStr([start], string1, string2, [compare])
هنا ،
الوسيطات | مطلوب / اختياري | التعريف |
---|---|---|
البدء | اختياري | موضع بدء البحث.
|
string1 | مطلوب | السلسلة المراد البحث فيها ، السلسلة الأساسية. |
string2 | مطلوب | السلسلة المراد البحث عنها في السلسلة الأساسية . |
قارن | اختياري | الوظيفة InStr حساسة لحالة الأحرف بشكل افتراضي. ولكن إذا كنت تريد تشغيل حالة غير حساسة لحالة الأحرف InStr ، فيمكنك تمرير الوسيطة هنا لإجراء مقارنة معينة. هذه الحجة يمكن أن تكون على النحو التاليالقيم ،
بشكل افتراضي ، يأخذ InStr vbBinaryCompare كوسيطة مقارنة. |
8 أمثلة سهلة للعثور على موضع سلسلة معين في سلسلة معينة باستخدام VBA
دعونا نرى بعض الأمثلة البسيطة للحصول على مواضع سلاسل معينة في سلسلة معينة باستخدام VBA .
1. VBA للبحث عن موضع النص في سلسلة
أدناه مثال على InStr للعثور على موضع نص في سلسلة.
- اضغط على Alt + F11 على لوحة المفاتيح أو انتقل إلى علامة التبويب Developer - & gt؛ Visual Basic لفتح محرر Visual Basic .
- في نافذة التعليمات البرمجية المنبثقة ، من شريط القوائم ، انقر فوق إدراج - & GT. الوحدة النمطية .
- الآن في نافذة الكود ، اكتب برنامجًا بسيطًا InStr داخل برنامج VBA Sub الإجراء (انظر أدناه).
5507
كودك جاهز الآن للتشغيل.
- اضغط على F5 على لوحة المفاتيح أو من شريط القائمة حدد تشغيل - & GT. تشغيل Sub / UserForm . يمكنك أيضًا النقر فوق رمز التشغيل الصغير في شريط القائمة الفرعية لتشغيل الماكرو.
سترى أن سيعطيك مربع الرسائل المنبثقة رقم الإعلان عن موضع النص الذي تريد التحقق منه هو اختيار ”عبارة عن جملة مكونة من 21 حرفًا (مع مسافات) وأردنا العثور على موضع النص" اختيار "في تلك السلسلة. بدأ النص " اختيار " من الموضع السادس عشر للسلسلة الأساسية ، ومن ثم حصلنا على الرقم 16 كإخراج في مربع الرسالة.
2. VBA للبحث عن نص من موضع محدد في السلسلة
الآن دعنا نتعرف على ما سيحدث إذا أردنا الحصول على الموضع من رقم معين.
- بنفس الطريقة مثل قبل ذلك ، افتح محرر Visual Basic من علامة التبويب Developer و أدخل وحدة في نافذة التعليمات البرمجية.
- في في نافذة الكود ، اكتب برنامج InStr بسيط الموضح أعلاه ومرر القيمة في وسيطة البداية وفقًا للموضع الذي تريد حساب النص منه.
3105
- التالي ، تشغيل الكود.
سترى أن مربع الرسالة المنبثقة سوف يعطيك رقم يعلن عن موضع للنص بدءًا من موضع معين تريد التحقق منه.
توضيح:
كما علمنا بالفعل (من مناقشة المرحلة 1) أن النص " اختيار " بدأ من موضع 16 ، لذلك قمنا بإدراج اثنين " اختيار “في السلسلة الأساسية وقم بتعيين 17 على أنهالمعلمة الأولى لتخطي الخيار الأول " الاختيار ”. لذلك ، قمنا بتشغيل الماكرو أعلاه وأظهر لنا رقم الموضع 27 وهو بالضبط رقم موضع الثانية " اختيار " في السلسلة المحددة.
3. VBA للبحث عن نص باستخدام وظيفة InStr غير حساسة لحالة الأحرف في سلسلة
من مقدمة وظيفة InStr ، فأنت تعلم بالفعل أنه افتراضيًا ، تعمل الوظيفة InStr حاله حساسه. دعنا نكتشف ذلك بمثال.
انظر ما يلي رمز VBA ، حيث أردنا العثور على موضع الكلمة " الاختيار "مع كبير" C " في السلسلة" السعادة هي اختيار "حيث يتم كتابة الاختيار باستخدام صغير" c " .
- قم بتشغيل الكود وابحث عن 0 كإخراج لدينا.
هذا لأن وظيفة InStr تعامل حرف "C" و صغير "c" بشكل مختلف. لذلك بحثت عن كلمة " اختيار " في السلسلة ولم تحصل على أي تطابق ، لذلك تم إرجاع 0 .
- لجعل وظيفة InStr غير حساسة لحالة الأحرف ، اضبط وسيطة المقارنة على vbTextCompare (انظر أدناه).
3901
- تشغيل الكود.
ستحصل على موضع النص من السلسلة ، سواء أكان النص مكتوبًا بأحرف كبيرة أو صغيرة .
4. VBA للبحث عن نص من يمين السلسلة
حتى الآن كانت الوظيفة InStr تعطينا فقط الموضع من الجانب الأيسر من السلسلة. ولكن ماذا لو كنت تريد العثور على موضع النص من الجانب الأيمن من السلسلة.
تبحث وظيفة InStrRev من اليمين. تعمل الوظيفة InStrRev بشكل مشابه جدًا لوظيفة InStr وستجد لك موضع نص من الجانب الأيمن من السلسلة.
انظر الأمثلة التالية لفهم الاختلاف.
- إذا قمنا بتشغيل الكود التالي مع وظيفة InStr إذن ،
يعطينا الموضع ( 16 ) للنص الأول " الاختيار ".
- ولكن إذا قمنا بتشغيل نفس الكود باستخدام الوظيفة InStrRev ، فإن
يعطينا الموضع ( 27 ) من النص الأخير " اختيار ".
قراءات مماثلة:
- FindNext باستخدام VBA في Excel (مثالان)
- كيفية البحث والاستبدال باستخدام VBA (11 طريقة)
- البحث عن تطابق تام باستخدام VBA في Excel (5 طرق)
5. VBA للبحث عن موضع حرف في سلسلة
يمكنك أيضًا العثور على موضع حرف معين في سلسلة بالطريقة نفسها التي وجدت بها النص.
- انسخ التعليمات البرمجية التالية في VBA نافذة التعليمات البرمجية
1636
- و تشغيل الماكرو.
أول " e " في السلسلة المحددة لدينا هو فيالرقم 7 الموضع.
6. VBA للبحث عن سلسلة فرعية في سلسلة
هنا سوف نتعلم كيفية معرفة ما إذا كانت السلسلة تحتوي على سلسلة فرعية أم لا.
للحصول على ذلك ، لدينا لتشغيل جملة IF في التعليمات البرمجية الخاصة بنا.
- بنفس الطريقة السابقة ، افتح محرر Visual Basic من علامة التبويب Developer و أدخل a الوحدة النمطية في نافذة التعليمات البرمجية.
- في إطار التعليمات البرمجية ، انسخ الكود التالي والصقه.
9315
Your الكود جاهز الآن للتشغيل.
- تشغيل الماكرو.
إذا كانت السلسلة تحتوي على السلسلة الفرعية ، فستحصل على تطابق تم العثور عليه ، وإلا فلن ترجع أي تطابق تم العثور عليه. في مثالنا ، أردنا معرفة ما إذا كانت السلسلة الأساسية " السعادة هي اختيار " تحتوي على كلمة " اختيار " أم ليس. كما هو الحال ، نحصل على نتيجة تم العثور على نتيجة .
7. VBA للبحث عن سلسلة في نطاق خلية
يمكنك البحث عن نص معين في نطاق خلية من سلسلة وإرجاع سلسلة معينة.
انظر إلى المثال التالي حيث سنقوم ابحث عن " Dr. " وعندما يكون هناك تطابق سيعود " Doctor ".
- أدناه هو الرمز للحصول على النتيجة التي تمت مناقشتها أعلاه ،
8501
- تشغيل رمز والنتيجة معروضة أدناه
- يمكنك تعديل الماكرو وفقًا لحاجتك. على سبيل المثال ، إذا كنت تريدللعثور على " الأستاذ " في أي خلية سلسلة ، والحصول على " Professor " كعائد ، ثم مرر ببساطة " الأستاذ "كقيمة بدلاً من" الدكتور . " في السطر الرابع من الماكرو و " الأستاذ " بدلاً من " Doctor " في السطر الخامس من الماكرو وحدد رقم نطاق الخلية وفقًا لذلك.
8. VBA للبحث عن سلسلة في خلية
يمكنك أيضًا البحث عن نص معين في خلية مفردة من السلسلة وإرجاع سلسلة معينة.
- انسخ الكود التالي والصقه في نافذة الكود.
5696
سيبحث عن " Dr. ”في الخلية B5 وإذا عثرت على التطابق ، فستعيد" Doctor "في الخلية C5 .
- يمكنك تعديل الماكرو حسب حاجتك. على سبيل المثال ، إذا كنت تريد العثور على " الأستاذ " في أي خلية سلسلة ، والحصول على " Professor " كعائد ، ثم مرر ببساطة " الأستاذ " كقيمة بدلاً من " Dr ." في السطر الثاني من الماكرو و " الأستاذ " بدلاً من " Doctor " في السطر الثالث من الماكرو وحدد الرقم المرجعي للخلية وفقًا لذلك. آمل أن تكون هذه المقالة مفيدة جدًا لك. لا تتردد في طرح أي أسئلة بخصوصالموضوع.