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
जब हम इस मैक्रो को चलाते हैं, तो पिवट तालिका स्वचालित रूप से केवल उन पंक्तियों को दिखाने के लिए फ़िल्टर की जाती है जिनका स्थिति कॉलम में मान गार्ड या सेंटर है:
पिवट तालिका को केवल उन पंक्तियों को दिखाने के लिए फ़िल्टर किया गया है जिनका स्थिति कॉलम में मान गार्ड या सेंटर है।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि वीबीए में अन्य सामान्य कार्य कैसे करें:
वीबीए: पिवट टेबल को रीफ्रेश कैसे करें
वीबीए: डुप्लिकेट मान कैसे हटाएं
वीबीए: श्रेणी में पंक्तियों की संख्या कैसे गिनें