VBA StrComp | قارن السلاسل في VBA باستخدام وظيفة StrComp

وظيفة Excel VBA StrComp

VBA StrComp هي وظيفة مضمنة تستخدم لمقارنة ما إذا كانت قيمتا السلسلة متطابقة أم لا. ومع ذلك ، لا يتم إهمال النتائج بشكل افتراضي TRUE أو FALSE كما هو الحال في ورقة العمل بل هي مختلفة.

قبل أن نلقي نظرة على النتائج ، اسمحوا لي أن أريك بناء جملة دالة StrComp أولاً.

  • السلسلة 1: السلسلة 1 هي أول سلسلة أو قيمة نقوم بمقارنتها.
  • السلسلة 2: السلسلة 2 هي السلسلة أو القيمة الثانية التي نقارنها مع السلسلة 1 .
  • قارن: يمكننا توفير ثلاثة خيارات هنا.
      • 0 = قارن ثنائي. هذا يؤدي حسابات حساسة لحالة الأحرف. على سبيل المثال "Hello" لا تساوي "HELLO" لأن كلتا حالتي الكلمتين مختلفتان. هذه هي القيمة الافتراضية إذا تجاهلت هذه المعلمة. vbBinaryCompare
      • 1 = مقارنة النص. ينفذ هذا الخيار العمليات الحسابية غير الحساسة لحالة الأحرف. على سبيل المثال ، "Hello" تساوي حدث "HELLO" على الرغم من اختلاف حالتي الكلمتين. vbTextCompare
      • 2 = مقارنة الوصول. يؤدي هذا مقارنة قاعدة البيانات.

نتائج دالة مقارنة الأوتار (StrComp)

كما قلت عندما نقارن بين قيمتين في ورقة العمل نحصل على النتيجة إما صحيحة أو خاطئة. ولكن مع نتائج وظيفة مقارنة سلسلة VBA ليست هي نفسها.

  • نحصل على صفر (0) عندما تكون السلسلة 1 تساوي String 2.
  • نحصل على واحد (1) عندما تكون قيمة السلسلة 1 أكبر من قيمة السلسلة 2 .
  • نحصل على ناقص واحد (-1) عندما تكون قيمة String 1 أقل من String 2
  • نحصل على NULL عندما تكون قيمة String 1 أو String 2 NULL.

أمثلة لاستخدام وظيفة VBA StrComp

يمكنك تنزيل قالب Excel VBA StrComp هنا - قالب Excel VBA StrComp

مثال 1

لنبدأ بمثال بسيط. على سبيل المثال ، سنقارن بين قيمتين ، مثل "Excel VBA" و "Excel VBA".

رمز:

 Sub StrComp_Example1 () Dim FirstValue as String 'To Store String 1 value Dim SecondValue as String' To Store String 2 قيمة Dim نتيجة كسلسلة 'لتخزين نتيجة صيغة StrComp FirstValue = "Excel VBA" تعيين قيمة السلسلة 1 SecondValue = "Excel VBA" "تعيين قيمة السلسلة 2 النتيجة = StrComp (FirstValue ، SecondValue ، vbBinaryCompare) 'تطبيق دالة StrComp ، نتيجة MsgBox' إظهار النتيجة في مربع الرسالة End Sub 

عندما أقوم بتشغيل هذا الرمز ، سنحصل على صفر (0) كنتيجة لأن قيمتي String 1 و String 2 هي نفسها.

المثال رقم 2

الآن سأغير حالات كلمتين.

السلسلة 1 = Excel Vba

السلسلة 2 = Excel VBA

رمز:

 Sub StrComp_Example2 () Dim FirstValue as String 'To Store String 1 value Dim SecondValue As String' To Store String 2 قيمة Dim النتيجة كسلسلة 'لتخزين نتيجة صيغة StrComp FirstValue = "Excel Vba" "تعيين قيمة السلسلة 1 SecondValue = "Excel VBA" "تعيين قيمة السلسلة 2 النتيجة = StrComp (FirstValue ، SecondValue ، vbBinaryCompare) 'تطبيق دالة StrComp ، نتيجة MsgBox' إظهار النتيجة في مربع الرسالة End Sub 

عندما أقوم بتشغيل هذا الكود ، سنحصل على 1 لأننا قدمنا ​​وسيطة المقارنة كـ " vbBinaryCompare" سوف تتحقق من الأحرف الحساسة لحالة الأحرف.

الآن سأغير خيار المقارنة من " vbBinaryCompare" إلى "vbTextCompare "

رمز:

 Sub StrComp_Example3 () Dim FirstValue as String 'To Store String 1 value Dim SecondValue As String' To Store String 2 قيمة Dim نتيجة كسلسلة 'لتخزين نتيجة صيغة StrComp FirstValue = "Excel Vba" "تعيين قيمة السلسلة 1 SecondValue = "Excel VBA" "تعيين قيمة السلسلة 2 النتيجة = StrComp (FirstValue، SecondValue، vbTextCompare) 'تطبيق دالة StrComp ، نتيجة MsgBox' إظهار النتيجة في مربع الرسالة End Sub 

باستخدام هذه المقارنة ، سنحصل على صفر (0) لأن vbaTextCompare يتجاهل الكلمات الحساسة لحالة الأحرف.

المثال رقم 3

دراسة حالة VBA StrComp مع حالة IF

افترض أن لديك البيانات مثل الصورة أدناه.

نحن في حاجة إلى المقارنة سلسلة 1 مع سلسلة 2 وتصل إلى النتيجة بأنها "تامة" إذا كان كلاهما نفس، نتيجة شيء آخر يجب أن يكون "غير تامة".

سوف يقوم الكود أدناه بالمهمة بالنسبة لنا.

رمز:

 Sub StrComp_Example4 () نتيجة باهتة على هيئة خافت سلسلة I كعدد صحيح لـ i = 2 إلى 6 النتيجة = StrComp (الخلايا (i ، 1). القيمة ، الخلايا (i ، 2). القيمة) إذا كانت النتيجة = 0 ثم الخلايا (i ، 3) ) .Value = "Exact" Else Cells (i، 3) .Value = "Not Exact" End If Next i End Sub 

عندما أقوم بتشغيل رمز VBA أعلاه في Excel ، سنحصل على النتيجة أدناه.

إذا نظرت إلى الخلية C4 String 1 و String 2 هي نفسها ولكن الأحرف حساسة لحالة الأحرف ، فإن النتيجة هي "Not Exact". للتغلب على هذه المشكلة ، نحتاج إلى توفير المقارنة كـ vbTextCompare.

يوجد أدناه الكود المعدل للحصول على النتيجة "بالضبط" لخلية C4.

رمز:

 Sub StrComp_Example4 () نتيجة باهتة على هيئة خافت سلسلة I كعدد صحيح لـ i = 2 إلى 6 النتيجة = StrComp (الخلايا (i ، 1). القيمة ، الخلايا (i ، 2). القيمة ، vbTextCompare) إذا كانت النتيجة = 0 ثم الخلايا (i ، 3) .Value = "بالضبط" خلايا أخرى (i، 3) .Value = "Not Exact" End If Next i End Sub 

سيعود هذا الرمز النتيجة أدناه.


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