Excel, Pivottabellen ... Du auch ?
Allgemein Excel
Also da baut man in Excel eine Pivottabelle, da man sich alle Daten nicht gleichzeitig anschauen kann und will baut man ein paar Berichtsfelder ein.....
Nach und nach werden immer mehr Tabellenblätter auf Basis der gleichen Grunddaten mit Pivots bestückt die Berichtsfelder bleiben die gleichen
z.B.
Kontinent
Land
Region
usw.....
Jetzt hätte man gerne, wenn sich in den Berichtsfeldern auf der ersten Seite was ändert, dass diese Auswahl auf die anderen Blätter übernommen wird .....
Kategorie Also da baut man in Excel eine Pivottabelle, da man sich alle Daten nicht gleichzeitig anschauen kann und will baut man ein paar Berichtsfelder ein.....
Nach und nach werden immer mehr Tabellenblätter auf Basis der gleichen Grunddaten mit Pivots bestückt die Berichtsfelder bleiben die gleichen
z.B.
Kontinent
Land
Region
usw.....
Jetzt hätte man gerne, wenn sich in den Berichtsfeldern auf der ersten Seite was ändert, dass diese Auswahl auf die anderen Blätter übernommen wird .....
Mit der folgenden Funktion kann man die
Auswahl der Berichtsfelder (generisch) auf andere Pivots übernehmen....
Sub UpdatingPivotOnSheet(xFromSheet As String, xFromPivot As String, xToSheet As String, xToPivot As String)
On Error GoTo ErrorHandler
Application.StatusBar = "Updating selection from " & xFromSheet & " to " & xToSheet
For i = 1 To Sheets(xFromSheet).PivotTables(xFromPivot).PivotFields.Count
Dim s As String
s = Sheets(xFromSheet).PivotTables(xFromPivot).PivotFields(i).Name
On Error Resume Next
Sheets(xToSheet).PivotTables(xToPivot).PivotFields(s).CurrentPageName = Sheets(xFromSheet).PivotTables(xFromPivot).PivotFields(s).CurrentPageName
On Error GoTo ErrorHandler
Next
ExitSub:
Exit Sub
ErrorHandler:
Application.StatusBar = "Error on Updating"
Application.Wait 1
Resume ExitSub
End Sub
Habe hier die CurrentPageName verwendet, da ich die Funktionalität auf einem Cube mit den Analysis Services realisierte!
Jetzt in die Haupt-Pivot noch folgenden Event implementieren ->
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Application.ScreenUpdating = False
UpdatingPivotOnSheet "Overview", "PivotTable1", "Sheet1", "PivotTable1"
UpdatingPivotOnSheet "Overview", "PivotTable1", "Sheet2", "PivotTable1"
Application.ScreenUpdating = True
Application.StatusBar = ""
End Sub
fertisch , viel Spaß damit!
Gruß JJR
P.S.: ApplicationScreenUpdating = False beschleunigt einfach nur ein wenig, da Excel nix malen muß!
Sub UpdatingPivotOnSheet(xFromSheet As String, xFromPivot As String, xToSheet As String, xToPivot As String)
On Error GoTo ErrorHandler
Application.StatusBar = "Updating selection from " & xFromSheet & " to " & xToSheet
For i = 1 To Sheets(xFromSheet).PivotTables(xFromPivot).PivotFields.Count
Dim s As String
s = Sheets(xFromSheet).PivotTables(xFromPivot).PivotFields(i).Name
On Error Resume Next
Sheets(xToSheet).PivotTables(xToPivot).PivotFields(s).CurrentPageName = Sheets(xFromSheet).PivotTables(xFromPivot).PivotFields(s).CurrentPageName
On Error GoTo ErrorHandler
Next
ExitSub:
Exit Sub
ErrorHandler:
Application.StatusBar = "Error on Updating"
Application.Wait 1
Resume ExitSub
End Sub
Habe hier die CurrentPageName verwendet, da ich die Funktionalität auf einem Cube mit den Analysis Services realisierte!
Jetzt in die Haupt-Pivot noch folgenden Event implementieren ->
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Application.ScreenUpdating = False
UpdatingPivotOnSheet "Overview", "PivotTable1", "Sheet1", "PivotTable1"
UpdatingPivotOnSheet "Overview", "PivotTable1", "Sheet2", "PivotTable1"
Application.ScreenUpdating = True
Application.StatusBar = ""
End Sub
fertisch , viel Spaß damit!
Gruß JJR
P.S.: ApplicationScreenUpdating = False beschleunigt einfach nur ein wenig, da Excel nix malen muß!