Erstellen von zwei pivottabellen - Feld wird aus erster in zweite verschoben

08/12/2010 - 16:22 von Volker Neurath | Report spam
Hallo zusammen,

und gleich nochein Problem.

Mit der folgenden routine erzeuge ich zwei Pvottabellen auf
unterschiedlichen Sheets in meinem Workbook, was auch grundsàtzlich
klappt:
Sub CreatePivotTables()

Dim NoSubtotal As Variant

Dim ptCache As PivotCache
Dim ptTable As PivotTable
Dim strDBR As String
Dim i As Integer

NoSubtotal = Array(False, False, False, False, False, False, False,
False, False, False, False, False)

' Application.ScreenUpdating = False

Set ptCache = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, _
SourceData:="A1:AJ" & _
Tabelle4.UsedRange.Rows.Count)

'Pivottabelle 'Mengen' anlegen

Set ptTable = ptCache.CreatePivotTable _
(tabledestination:=Tabelle6.Range("B2"), _
tablename:="Mengen")

With ptTable
'normale Seitenfelder
.PivotFields("ProfitCenterName").Orientation = xlPageField
.PivotFields("MPG_Name").Orientation = xlPageField
.PivotFields("Order/Invoice").Orientation = xlPageField

'Spaltenfelder
.PivotFields("SAP document date").Orientation = xlColumnField
'gruppieren
' .PivotFields("SAP document date").VisibleItems(1).Group _
' Start:=True, End:=True, _
' periods:=Array(False, False, False, False, True, False,
True)

'Zeilenfelder
.PivotFields("Sales rep").Orientation = xlRowField
.PivotFields("Final customer info").Orientation = xlRowField
.PivotFields("Indirect customer").Orientation = xlRowField
.PivotFields("Direct customer").Orientation = xlRowField
.PivotFields("Quotation Nb").Orientation = xlRowField
.PivotFields("Product code").Orientation = xlRowField
.PivotFields("Product text").Orientation = xlRowField

.PivotFields("Qty booked").Orientation = xlDataField

'Zwiaschenergebnisse entfernen
.PivotFields("Product code").Subtotals = NoSubtotal

.PivotFields("Quotation Nb").Subtotals = NoSubtotal
.PivotFields("Direct customer").Subtotals = NoSubtotal
.PivotFields("Indirect customer").Subtotals = NoSubtotal
.PivotFields("Final customer info").Subtotals = NoSubtotal

With .PivotFields("SAP document date")
With .DataRange.Cells(1)
.Group Start:=True, End:=True, Periods:=Array(False, _
False, False, False, True, False, True)
End With
End With

With .PivotFields("Jahre")
.Orientation = xlPageField
.CurrentPage = "2010"
End With
End With

'Datenfeldformel=summe
Tabelle6.Range("I9").PivotField.Function = xlSum

'Pivottabelle 'Umsatz' anlegen
Set ptTable = ptCache.CreatePivotTable _
(tabledestination:=Tabelle7.Range("B2"), _
tablename:="Umsatz")

With ptTable
'normale Seitenfelder
.PivotFields("ProfitCenterName").Orientation = xlPageField
.PivotFields("MPG_Name").Orientation = xlPageField
.PivotFields("Order/Invoice").Orientation = xlPageField

'Spaltenfelder
.PivotFields("SAP document date").Orientation = xlColumnField
'gruppieren
' .PivotFields("SAP document date").VisibleItems(1).Group _
' Start:=True, End:=True, _
' periods:=Array(False, False, False, False, True, False,
True)

'Zeilenfelder
.PivotFields("Sales rep").Orientation = xlRowField
.PivotFields("Final customer info").Orientation = xlRowField
.PivotFields("Indirect customer").Orientation = xlRowField
.PivotFields("Direct customer").Orientation = xlRowField
.PivotFields("Quotation Nb").Orientation = xlRowField
.PivotFields("Product code").Orientation = xlRowField
.PivotFields("Product text").Orientation = xlRowField

.PivotFields("Total quotation amount").Orientation = xlDataField

'Zwiaschenergebnisse entfernen
.PivotFields("Product code").Subtotals = NoSubtotal

.PivotFields("Quotation Nb").Subtotals = NoSubtotal
.PivotFields("Direct customer").Subtotals = NoSubtotal
.PivotFields("Indirect customer").Subtotals = NoSubtotal
.PivotFields("Final customer info").Subtotals = NoSubtotal

With .PivotFields("SAP document date")
With .DataRange.Cells(1)
.Group Start:=True, End:=True, Periods:=Array(False, _
False, False, False, True, False, True)
End With
End With

With Tabelle7.PivotTables("Umsatz")
With .PivotFields("Jahre")
.Orientation = xlPageField
.CurrentPage = "2010"
End With
End With

Tabelle7.Range("I9").PivotField.Function = xlSum


End With

Application.ScreenUpdating = True

Set ptCache = Nothing
Set ptTable = Nothing


End Sub


Aaber: wenn *beide* Tabellen erzeugt sind, fehlt in der ersten Tabelle
("Mengen") das Feld "Jahre" - dafür befindet es sich nun in der zweiten
("Umsatz")

Es wird aber zunàchst korrekt in der ersten ("Menge") eingefügt, wie ich
durch einen Haltepunkt feststellen konnte (außerdem hab ich den Code für
die zweite Tabelle sowieso erst eingefügt, nachdem die erste sicher
korrekt erzeugt wurde)

Wie erreiche ich, dass das Feld "Jahre" in *beiden* Pivots verfügbar
ist?
Und rein zum Verstàndnis: warum làuft das bei mir, trotz explizitem
Verweis auf Sheet "Umsatz" (== Tabelle7) schief?

Meine hier verfügbare literatur hilft mir leider nicht weiter :(

Volker

Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
 

Lesen sie die antworten

#1 Volker Neurath
08/12/2010 - 16:41 | Warnen spam
Volker Neurath wrote:

Aaber: wenn *beide* Tabellen erzeugt sind, fehlt in der ersten Tabelle
("Mengen") das Feld "Jahre" - dafür befindet es sich nun in der zweiten
("Umsatz")



Ich sehe gerade:
das Feld ist zwar nach wie vor auch in der zuerst erzeugten Pivot
vorhanden, es ist jetzt aber nicht mehr im Seitenbereich, sondern wieder
im Spaltenbereich - und die Einstellung auf das Jahr 2010 ist auch
verloren.

Korrekt ist das so trotzdem nicht.

Warum ist das so?
Warum wird jetzt das zuletzt erstellte PT korrekt angelegt und
angezeigt, das zweite aber derart zerstört?

Volker

Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.

Ähnliche fragen