كيفية حساب القيم الفريدة في النطاق باستخدام vba


يمكنك استخدام بناء الجملة الأساسي التالي لحساب عدد القيم الفريدة في نطاق باستخدام VBA:

 SubCountUnique ()
    Dim Rng As Range, List As Object, UniqueCount As Long
    Set List = CreateObject(" Scripting.Dictionary ")
    
    'count unique values in range A2:A11
    For Each Rng In Range(" A2:A11 ")
      If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
    Next
    
'store unique count
UniqueCount = List.Count
    
    ' display unique count
    MsgBox " Count of Unique Values: " & UniqueCount

End Sub

يقوم هذا المثال بحساب عدد القيم الفريدة في النطاق A2:A11 ثم يعرض العدد في مربع رسالة.

يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.

مثال: حساب القيم الفريدة في النطاق باستخدام VBA

لنفترض أن لدينا القائمة التالية لأسماء فرق كرة السلة في برنامج Excel:

لنفترض أننا نريد حساب عدد أسماء الفرق الفريدة في النطاق A2:A11 .

يمكننا إنشاء الماكرو التالي للقيام بذلك:

 SubCountUnique()
Dim Rng As Range, List As Object, UniqueCount As Long
    Set List = CreateObject(" Scripting.Dictionary ")
    
    'count unique values in range A2:A11
For Each Rng In Range(" A2:A11 ")
      If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
    Next
    
    'store unique count
    UniqueCount = List.Count
    
    'display unique count
    MsgBox " Count of Unique Values: " & UniqueCount

End Sub

عندما نقوم بتشغيل هذا الماكرو، نحصل على الإخراج التالي:

رقم VBA واحد

يخبرنا مربع الرسالة بوجود 5 أسماء فريدة للفريق.

يمكننا التحقق من صحة ذلك عن طريق تحديد كل اسم من أسماء الفريق الفريدة يدويًا:

  • مافس
  • حرارة
  • شبكات
  • المحاربون
  • الملوك

هناك في الواقع 5 أسماء فرق فريدة.

ملاحظة : لحساب عدد القيم الفريدة في نطاق مختلف، ما عليك سوى استبدال A2:A11 في حلقة For Each بنطاق مختلف.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في VBA:

VBA: كيفية حساب الخلايا التي تحتوي على نص معين
فبا: كيفية حساب عدد الصفوف في النطاق
VBA: كيفية كتابة وظائف COUNTIF وCOUNTIFS

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *