كيفية تصفية الجداول المحورية باستخدام vba (مع أمثلة)


يمكنك استخدام الطرق التالية لتصفية الجداول المحورية في Excel باستخدام VBA:

الطريقة الأولى: تصفية الجدول المحوري بناءً على قيمة

 SubFilterPivotTable ()
   Dim pf As PivotField
   Dim myFilter As String
   Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
   myFilter = ActiveWorkbook.Sheets(" Sheet1 ").Range(" J2 ").Value
   pf.PivotFilters.Add2 xlCaptionEquals, , myFilter
End Sub

سيقوم هذا الماكرو المحدد بتصفية الجدول المحوري المسمى PivotTable1 لإظهار الصفوف التي تكون فيها القيمة الموجودة في عمود الموضع بالجدول المحوري مساوية للقيمة الموجودة في الخلية J2 من الورقة1 .

الطريقة الثانية: تصفية PivotTable استنادًا إلى قيم متعددة

 Sub FilterPivotTableMultiple()
  Dim v Ace Variant
  Dim i As Integer, j As Integer
  Dim pf As PivotField
  Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
  
  'specify range with values to filter on
  v = Range(" J2:J3 ")
  
  'clear existing filters
  pf.ClearAllFilters
  
  'apply filter to pivot table
  With pf
    For i = 1 TB pf.PivotItems.Count
      j = 1
      Do While j <= UBound(v, 1) - LBound(v, 1) + 1
         If pf.PivotItems(i).Name = v(j, 1) Then
           pf.PivotItems(pf.PivotItems(i).Name).Visible = True
           Exit Do
        Else
          pf.PivotItems(pf.PivotItems(i).Name).Visible = False
       End If
        j = j + 1
      Loop
    Next i
 End With
End Sub

سيقوم هذا الماكرو المحدد بتصفية الجدول المحوري المسمى PivotTable1 لعرض تلك الصفوف فقط حيث تكون القيمة الموجودة في عمود الموضع في الجدول المحوري مساوية لإحدى القيم الموجودة في نطاق الخلايا J2:J3 .

الطريقة الثالثة: إزالة عوامل تصفية PivotTable

 SubClearPivotTableFilter ()
   Dim pt As PivotTable
   Set pt = ActiveSheet.PivotTables(" PivotTable1 ")
   pt.ClearAllFilters
End Sub

سيقوم هذا الماكرو المحدد بمسح كافة عوامل التصفية من الجدول المحوري المسمى PivotTable1 .

توضح الأمثلة التالية كيفية استخدام كل من هذه الطرق عمليًا.

المثال 1: تصفية الجدول المحوري بناءً على قيمة

لنفترض أننا أنشأنا جدولاً محوريًا من مجموعة بيانات في برنامج Excel لتلخيص النقاط التي سجلها لاعبو كرة السلة من فرق ومناصب مختلفة:

لنفترض أننا نريد تصفية الجدول المحوري لإظهار الصفوف التي تكون قيمتها في عمود الموضع هي Guard فقط.

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

 SubFilterPivotTable ()
   Dim pf As PivotField
   Dim myFilter As String
   Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
   myFilter = ActiveWorkbook.Sheets(" Sheet1 ").Range(" J2 ").Value
   pf.PivotFilters.Add2 xlCaptionEquals, , myFilter
End Sub

عندما نقوم بتشغيل هذا الماكرو، تتم تصفية الجدول المحوري تلقائيًا لإظهار الصفوف التي تكون قيمتها في عمود الموضع هي Guard فقط:

الجدول المحوري لمرشحات VBA

تمت تصفية الجدول المحوري لعرض الصفوف التي تكون قيمتها في عمود الموضع هي Guard فقط.

المثال 2: تصفية جدول محوري بناءً على قيم متعددة

لنفترض أننا نريد بدلاً من ذلك تصفية الجدول المحوري لإظهار الصفوف التي تكون قيمتها في عمود الموضع هي Guard أو Center فقط.

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

 Sub FilterPivotTableMultiple()
  Dim v Ace Variant
  Dim i As Integer, j As Integer
  Dim pf As PivotField
  Set pf = ActiveSheet.PivotTables(" PivotTable1 ").PivotFields(" Position ")
  
  'specify range with values to filter on
  v = Range(" J2:J3 ")
  
  'clear existing filters
  pf.ClearAllFilters
  
  'apply filter to pivot table
  With pf
    For i = 1 TB pf.PivotItems.Count
      j = 1
      Do While j <= UBound(v, 1) - LBound(v, 1) + 1
         If pf.PivotItems(i).Name = v(j, 1) Then
           pf.PivotItems(pf.PivotItems(i).Name).Visible = True
           Exit Do
        Else
          pf.PivotItems(pf.PivotItems(i).Name).Visible = False
       End If
        j = j + 1
      Loop
    Next i
 End With
End Sub

عندما نقوم بتشغيل هذا الماكرو، تتم تصفية الجدول المحوري تلقائيًا لإظهار الصفوف التي تكون قيمتها في عمود الموضع هي Guard أو Center فقط:

الجدول المحوري لمرشح VBA بناءً على قيم متعددة

تمت تصفية الجدول المحوري لإظهار الصفوف التي تكون قيمتها في عمود الموضع هي Guard أو Center فقط.

مصادر إضافية

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

VBA: كيفية تحديث الجداول المحورية
VBA: كيفية إزالة القيم المكررة
فبا: كيفية حساب عدد الصفوف في النطاق

Add a Comment

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