جدول المحتويات
إحدى الوظائف الأكثر أهمية والأكثر استخدامًا التي نستخدمها في تطبيق Visual Basic (VBA) هي وظيفة Find. في هذه المقالة ، سأوضح لك كيف يمكنك استخدام وظيفة البحث من Excel مع الأمثلة والرسوم التوضيحية المناسبة.
تنزيل المصنف التدريبي
ابحث عن وظيفة في VBA في Excel.xlsm
6 أمثلة سريعة لاستخدام وظيفة FIND في VBA
هنا لدينا حصلت على مجموعة بيانات تحتوي على أسماء الكتب والمؤلفين و الأسعار لبعض الكتب في مكتبة تسمى Martin Bookstore.
اليوم هدفنا هو رؤية أنواع مختلفة من استخدامات وظيفة البحث من VBA من مجموعة البيانات هذه.
1. استخدم وظيفة البحث في VBA بدون معلمة
يمكنك استخدام وظيفة البحث من VBA بدون معلمات.
ثم سيبحث عن قيمة محددة ضمن نطاق من الخلايا ويعيد أول تطابق يعثر عليه.
فلنبحث عن الاسم “P. B. Shelly ” في العمود المؤلف ( C4: C13 ).
السطر الذي يحتوي على وظيفة Find سيكون:
Set cell = Range("C4:C17").Find("P. B. Shelly")
الاكتمال كود VBA سيكون:
⧭ كود VBA:
Set cell = Range("C4:C17").Find("P. B. Shelly")
⧭ الإخراج:
ينتج يسمى الماكرو بحث عن . إذا قمت بتشغيل الماكرو ، فسيعود $ C $ 6 ، عنوان الخلية الأول الذي يحمل الاسم P. ب. شيلي .
اقرأ المزيد: البحث داخل نطاق باستخدام VBA فيExcel: بما في ذلك المطابقات التامة والجزئية
2. قم بتطبيق وظيفة البحث في VBA باستخدام المعلمة بعد (لبدء البحث من خلية محددة)
يمكنك استخدام المعلمة بعد مع Find function في VBA . ثم سيبدأ البحث عن قيمة من أسفل خلية داخل نطاق.
على سبيل المثال ، فلنبدأ البحث عن الاسم "P. ب. شيلي " من الخلية السفلية C6 .
سيكون سطر الكود:
Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6"))
وسيكون رمز VBA الكامل هو:
⧭ كود VBA:
3373
⧭ الإخراج:
سيعود $ C $ 13 لأنه يبدأ البحث من الخلية السفلية C6 ، هذا من الخلية C7 . لذلك يحصل على P. B. Shelly في الخلية C13 أولاً.
اقرأ المزيد: كيفية البحث عن سلسلة في الخلية باستخدام VBA في Excel
3. قم بتشغيل وظيفة البحث في VBA مع التفاف حول المعلمة بعد (للبحث عن قيمة بطريقة دائرية)
المعلمة بعد مع Find function يبحث عن قيمة بطريقة دائرية
أي أنه يبدأ البحث من أسفل خلية داخل نطاق ، وينتهي من البحث في النطاق ، ثم يبدأ مرة أخرى من أعلى النطاق.
على سبيل المثال ، لنبدأ البحث عن الاسم "John Keats" من الخلية السفلية C8 باستخدام بعد المعلمة.
سطر من سيكون الرمز:
Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8"))
وأكمل كود VBA سيكون:
⧭ كود VBA:
8869
⧭ الإخراج:
سيعود $ C $ 7 لأنه يبدأ البحث من الخلية السفلية C8 ، هذا من الخلية C9 .
لا تجد أي شيء يصل إلى الخلية C13 ، لذلك تبدأ مرة أخرى من الخلية C4 وتجد واحدة في الخلية C7 .
قراءات مماثلة:
- كيفية البحث عن سلسلة باستخدام VBA في Excel (8 أمثلة)
- البحث عن التطابق التام باستخدام VBA في Excel (5 طرق)
- كيفية البحث والاستبدال باستخدام VBA (11 طرق)
4. استخدم وظيفة البحث في VBA مع معلمة LookAt (للمطابقة التامة أو الجزئية)
يمكنك استخدام Find function في VBA مع معلمة LookAt .
استخدم LookAt = xlWhole لمطابقة مطابقة تامة ، و LookAt = xlPart لـ جزئي تطابق.
على سبيل المثال ، دعنا نحاول معرفة ما إذا كان هناك أي كتاب يحمل الاسم “Ode” في العمود Book Name ( B4: B13 ).
إذا استخدمنا xlWhole في سطر الكود:
Set cell = Range("B4:B13").Find("Ode", LookAt:=xlWhole)
سيظهر الناتج خطأ لأنه لن يجد أي تطابق تام .
ولكن إذا كنت تستخدم:
Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart)
ثم سيعود $ B $ 9 ، لأن هناك كتابًا يحمل الاسم "Ode" في الخلية B7 ، قصيدة العندليب.
لذا فإن الكود الكامل للمباراة الجزئية هو:
⧭ كود VBA:
4112
5. قم بتشغيل وظيفة البحث في VBA باستخدام معلمة SearchDirection (لتحديد اتجاه البحث)
يمكنك أيضًا استخدام Find function في VBA مع معلمة اتجاه البحث .
استخدم SearchDirection = xlNext للبحث من من أعلى إلى أسفل .
و SearchDirection = xlPrevious للبحث من من الأسفل إلى الأعلى .
على سبيل المثال ، دعنا نحاول العثور على المؤلف Elif Shafak في العمود المؤلف ( C4: C13 ).
إذا استخدمنا xlNext في سطر الكود:
Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlNext)
ثم سيعود $ C $ 5 .
ولكن إذا كنت تستخدم:
Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious)
ثم يعود $ C $ 11 .
لذا فإن الكود الكامل للبحث من من الأسفل إلى الأعلى هو:
⧭ كود VBA:
9531
6. ابحث عن وظيفة في VBA مع معلمة MatchCase (للمطابقة الحساسة لحالة الأحرف أو المطابقة غير الحساسة)
أخيرًا ، يمكنك استخدام Find function مع المعلمة MatchCase .
استخدم MatchCase = True لـ حساس لحالة الأحرف تطابق ، و MatchCase = False لـ تطابق غير حساس لحالة الأحرف .
على سبيل المثال ، دعنا نحاول العثور على الكتاب "الأم" في العمود اسم الكتاب ( B4: B13 ).
إذا استخدمنا True في سطر الكود:
Set cell = Range("B4:B13").Find("mother", MatchCase:=True)
سيظهر الناتج خطأ لأنه فاز ' ر تجد أيتطابق.
ولكن إذا كنت تستخدم:
Set cell = Range("B4:B13").Find("mother", MatchCase:=False)
ثم يعود $ B $ 9 لأنه يوجد كتاب باسم "Mother" في الخلية B8 .
لذا فإن الكود الكامل لـ تطابق غير حساس لحالة الأحرف هو:
⧭ كود VBA:
2320
خاتمة
باستخدام هذه الطرق ، يمكنك استخدام Find Function في تطبيق Visual Basic. هل لديك اسئلة؟ لا تتردد في سؤالنا.