Vba का उपयोग करके pivottables को कैसे फ़िल्टर करें (उदाहरण के साथ)


आप VBA का उपयोग करके Excel में पिवट तालिकाओं को फ़िल्टर करने के लिए निम्नलिखित विधियों का उपयोग कर सकते हैं:

विधि 1: मान के आधार पर पिवट तालिका को फ़िल्टर करें

 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 नामक पिवट तालिका को फ़िल्टर करेगा जहां पिवट तालिका के स्थिति कॉलम में मान शीट1 के सेल J2 में मान के बराबर है।

विधि 2: एकाधिक मानों के आधार पर पिवोटटेबल को फ़िल्टर करें

 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 में मानों में से एक के बराबर है।

विधि 3: पिवोटटेबल फ़िल्टर हटाएँ

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

यह विशेष मैक्रो PivotTable1 नामक पिवट तालिका से सभी फ़िल्टर साफ़ कर देगा।

निम्नलिखित उदाहरण दिखाते हैं कि व्यवहार में इनमें से प्रत्येक विधि का उपयोग कैसे करें।

उदाहरण 1: मान के आधार पर पिवट तालिका को फ़िल्टर करें

मान लीजिए कि हमने विभिन्न टीमों और पदों के बास्केटबॉल खिलाड़ियों द्वारा प्राप्त अंकों को सारांशित करने के लिए एक्सेल में डेटा सेट से एक पिवट टेबल बनाई है:

मान लीजिए कि हम केवल उन पंक्तियों को दिखाने के लिए पिवट तालिका को फ़िल्टर करना चाहते हैं जिनका स्थिति कॉलम में मान गार्ड है।

ऐसा करने के लिए हम निम्नलिखित मैक्रो बना सकते हैं:

 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

जब हम इस मैक्रो को चलाते हैं, तो पिवट तालिका स्वचालित रूप से केवल उन पंक्तियों को दिखाने के लिए फ़िल्टर की जाती है जिनका स्थिति कॉलम में मान गार्ड है:

वीबीए फिल्टर की धुरी तालिका

पिवट तालिका को केवल उन पंक्तियों को प्रदर्शित करने के लिए फ़िल्टर किया गया है जिनका स्थिति कॉलम में मान गार्ड है।

उदाहरण 2: अनेक मानों के आधार पर पिवट तालिका को फ़िल्टर करें

मान लीजिए कि हम इसके बजाय केवल उन पंक्तियों को दिखाने के लिए पिवट तालिका को फ़िल्टर करना चाहते हैं जिनका स्थिति कॉलम में मान गार्ड या सेंटर है।

ऐसा करने के लिए हम निम्नलिखित मैक्रो बना सकते हैं:

 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

जब हम इस मैक्रो को चलाते हैं, तो पिवट तालिका स्वचालित रूप से केवल उन पंक्तियों को दिखाने के लिए फ़िल्टर की जाती है जिनका स्थिति कॉलम में मान गार्ड या सेंटर है:

एकाधिक मानों के आधार पर VBA फ़िल्टर की पिवट तालिका

पिवट तालिका को केवल उन पंक्तियों को दिखाने के लिए फ़िल्टर किया गया है जिनका स्थिति कॉलम में मान गार्ड या सेंटर है।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि वीबीए में अन्य सामान्य कार्य कैसे करें:

वीबीए: पिवट टेबल को रीफ्रेश कैसे करें
वीबीए: डुप्लिकेट मान कैसे हटाएं
वीबीए: श्रेणी में पंक्तियों की संख्या कैसे गिनें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *