vba

2012-12-07 14 views
5

का उपयोग कर पिवट तालिका में सभी आइटमों को अचयनित करें क्या कुछ नए नव निर्मित पिवट तालिका में सभी वस्तुओं को अचयनित करने के तरीके की व्याख्या कर सकते हैं ताकि मैं वापस जा सकूं और केवल एक या दो आइटम चुन सकूं? मैंने निम्नलिखित कोशिश की:vba

.PivotItems("(Select All)").Visible = False 

धन्यवाद।

+0

आपको हमेशा एक सेल चुना जाना चाहिए, तो क्या होगा यदि आप इसके बजाय कुछ यादृच्छिक सेल का चयन करें? – PowerUser

+0

मुझे केवल दो विशेष कोशिकाओं का चयन करना है, इसलिए मैं उन सभी को अचयनित करना चाहता था और फिर केवल दो को चुनना चाहता था। – Chris2015

+0

ठीक है, पहले अपने वर्तमान चयन को अचयनित करने की कोई वास्तविक आवश्यकता नहीं है। क्या आप बस उन दो कोशिकाओं को चुनने के लिए सीधे छोड़ सकते हैं? – PowerUser

उत्तर

6

यह शायद सबसे करीब आप आप क्या चाहते करने के लिए प्राप्त कर सकते हैं:

Dim i As Long 
.PivotItems(1).Visible = True 
For i = 2 To .PivotItems.Count 
    .PivotItems(i).Visible = False 
Next 

यह बहुत पहले विकल्प केवल चयनित विकल्प (यह मानते हुए कि भीतर के साथ एक pivotfield ओर इशारा करता है) कर देगा। यदि आप जानते हैं कि आप हाथ से पहले क्या चाहते हैं ... तदनुसार संशोधित करें।

+0

में कुछ श्रेणियां दिखाई देता हूं, यहां मैं यही गया हूं। महान काम किया। धन्यवाद! ActiveSheet.PivotTables ("PivotTable1") के साथ इंटीजर के रूप में मंद करें। पिवोटफिल्ड्स ("बिजनेस एरिया")। ओरिएंटेशन = xlRowField .Position = 1 i = 2 के लिए। PivotItems.Count .ivotItems (i)। दृश्यमान = झूठी .PivotItems ("आग और ईएमएस - वर्दी")। दृश्यमान = सही .ivivItems ("पुलिस - वर्दी")। दृश्यमान = सही .PivotItems (i - 1)। दृश्यमान = झूठा अगला मैं – Chris2015

+0

के साथ समाप्त होता हूं या इसके बजाय मैं पूर्णांक के रूप में के साथ ActiveSheet.PivotTables ("PivotTable1") PivotFields ("व्यापार क्षेत्र") .Orientation = xlRowField .स्थिति = 1 के लिए मैं = 2 .PivotItems.Count .PivotItems (i - 1) करने के लिए। .Visible = झूठी .PivotItems ("आग और ईएमएस - वर्दी")। दृश्यमान = सही .PivotItems ("पुलिस - वर्दी")। दृश्यमान = सही .PivotItems ("(खाली)")।दृश्यमान = झूठी अगला मैं – Chris2015

+0

के साथ अंत में मैंने इस दृष्टिकोण का उपयोग किया था और इसे अभी भी धीमा होने के लिए पाया है लेकिन मैन्युअल अपडेटिंग को सही (यानी PivotTable.ManualUpdate = True) को बदलकर इसे सहन करने योग्य बना दिया गया है। यह यहां वर्णित है: http: //stackoverflow.com/questions/764504/speed-up-pivot-table-filtering-vba-code –

1

निम्नलिखित देखें। विशिष्ट फ़ील्ड नाम के लिए डेटा का चयन करें। कृपया ध्यान दें कि आपको डिफ़ॉल्ट रूप से कम से कम एक आइटम का चयन करना होगा। और यह भी न भूलें कि यदि आप वस्तुओं को छिपाना चाहते हैं, पिवोटटेबल फ़ील्ड में केवल संगत आइटम छुपाए जा सकते हैं। शायद पृष्ठ लोड पर, या वर्कशीट खुले या आपके किसी अन्य उप ट्रिगर पर, आप एक विशिष्ट फ़ील्ड के आधार पर चुने जाने के लिए एक विशेष आइटम का चयन कर सकते हैं। फिर अपने कोड को किसी और चीज के साथ आगे बढ़ने दें।

Sub specificItemsField() 
Dim pf As PivotField 
Dim pi As PivotItem 
Dim strPVField As String 

strPVField = "Field Name" 
Set pt = ActiveSheet.PivotTables(1) 
Set pf = pt.PivotFields(strPVField) 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

On Error Resume Next 
    pf.AutoSort xlManual, pf.SourceName 
    For Each pi In pf.PivotItems 
     pi.Visible = True 
    Next pi 
    pf.AutoSort xlAscending, pf.SourceName 

Application.DisplayAlerts = True 
Application.ScreenUpdating = True 

End Sub  
0

इस प्रकार मैं कस्टम फ़िल्टर चयन के लिए करता हूं। डबल लूपिंग के कारण धीमा हो सकता है।

Dim toSelect(1 To 3) As String 

toSelect(1) = "item1" 
toSelect(2) = "item2" 
toSelect(3) = "item3" 


For Each pvItem In objField.PivotItems 
    For Each st In toSelect 
     If pvItem.Value = st Then 
      pvItem.Visible = True 
      Exit For 
     Else 
      pvItem.Visible = False 
     End If 
    Next 
Next 
2

मैं पाया है कि प्रत्येक डेटा आइटम के माध्यम से पाशन बहुत समय लेता है, क्या हुआ अगर आप सभी आइटम के माध्यम से पाशन के बिना एक धुरी में एक आइटम पर फ़िल्टर करना चाहते हैं आप कर सकते हैं निम्नलिखित कोड का उपयोग है:

ActiveSheet.PivotTables("Your Pivot Name").PivotFields("Your Field Name").ClearAllFilters 
ActiveSheet.PivotTables("Your Pivot Name").PivotFields("Your Field Name").PivotFilters.Add _ 
    Type:=xlCaptionEquals, Value1:="Your string here" 

यह मूल रूप से एक लेबल फ़िल्टर है लेकिन यह मेरे लिए काम करता है।

 संबंधित मुद्दे