Bu dört alanın her birine bir dilimleyici ekleyebilirsiniz. Eklendikten sonra Slicer Connections'a gidebilir ve ilgili tüm pivotlarınızı seçebilirsiniz.
VBA'yı arıyorsanız, sayfadaki tüm pivotları devre dışı bırakmanız ve daha sonra tüm Rapor Filtreleri üyeleri arasında dolaşmanız ve seçilen değerleri bir diziye depolamanız gerekir.
Ya da gizli bir sekmede dilimleyiciler oluşturabilir ve CUBERANKEDMEMBER işlevini kullanarak dilimleyicinin tüm seçimlerini geri getirebilir ve ardından dizininizi oluşturmak ve raporunuzdan herhangi birinde pivot tablolarınıza uygulamak için bunu kullanabilirsiniz. filtreler
İşte
biz 2 pivot tabloları ile yapmış nasıl (eğer çalışma sayfasında bir Worksheet_PivotTableAfterValueChange prosedürü kullanabilirsiniz) değiştirin: Pivot Tablo alanlarını gruplandırılmış olduğu gibi, ben dilimleyiciyi bağlantı olamayacağını
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
''''variables for pivottable changed
Dim pivotname As String
Dim pivotname2 As String
Dim PT As PivotTable
Dim PT2 As PivotTable
''''variables for pivotrowfields
Dim pti As PivotItem
Dim pti2 As PivotField
''''variables for pagefilters
Dim PF As PivotField
Dim colPageFields As PivotFields
Dim aFilters As Variant
'''Un-enable events to avoid an endless loop
Application.EnableEvents = False
'''Set variables
pivotname = Target.Name
If pivotname = "PivotTable1" Then
pivotname2 = "PivotTable4"
Else
pivotname2 = "PivotTable1"
pivotname = "PivotTable4"
End If
If ActiveSheet.Name = "Slicer Setup" Then
Sheets("By Org Structure").Activate
End If
Set PT = ActiveSheet.PivotTables("" & pivotname & "")
Set PT2 = ActiveSheet.PivotTables("" & pivotname2 & "")
Set colPageFields = PT.PageFields
'''action for changing the filters on Page Fields
For Each PF In colPageFields
PF.CubeField.EnableMultiplePageItems = True
'PT2.PivotFields(PF.Name).CubeField.EnableMultiplePageItems = True
aFilters = PT.PivotFields(PF.Name).VisibleItemsList
If aFilters(1) = "" Then
If PT.PivotFields(PF.Name).CubeField.AllItemsVisible = True Then
PT2.PivotFields(PF.Name).ClearAllFilters
Else
PT2.PivotFields(PF.Name).VisibleItemsList = Array("")
End If
Else
PT2.PivotFields(PF.Name).VisibleItemsList = Array(aFilters)
End If
Next
Set colPageFields = PT.RowFields
'''action for changing the filters on Row Fields
For Each PF In colPageFields
PF.CubeField.EnableMultiplePageItems = True
'PT2.PivotFields(PF.Name).CubeField.EnableMultiplePageItems = True
aFilters = PT.PivotFields(PF.Name).VisibleItemsList
If aFilters(1) = "" Then
If PT.PivotFields(PF.Name).CubeField.AllItemsVisible = True Then
PT2.PivotFields(PF.Name).ClearAllFilters
Else
PT2.PivotFields(PF.Name).VisibleItemsList = Array("")
End If
Else
PT2.PivotFields(PF.Name).VisibleItemsList = Array(aFilters)
End If
Next
'''Re-enable events to allow for this event macro to be kicked off again next time pivottables are changed
Application.EnableEvents = True
ActiveWorkbook.ShowPivotTableFieldList = False
End Sub
görünüyor ve OLAP dayanmaktadır. VBA kodunuzu ayarlarken sahip olduğum tüm PivotTable'ları azaltmam ve bunlara kod eklemem gerektiğini varsayar mıyım? – onevba
Dünya, muhtemelen, her bir döngü için ya da her bir döngüde pivotlarla döngü yapmak için daha temiz ve kısa olabilir. –