ich habe eine etwas knifflige Angelegenheit:
Aus zwei Pivot-Tabellen sollen Daten in eine formatierte Tabelle untereinander einkopiert werden.
Meine Datei (300 MB groß) besteht aus 3 Tabellenblättern:
1) Auswertung
2) Datenquelle_1
3) Datenquelle_2
Pivot-Tabelle zu "Datenquelle_1" steht bei der "Auswertung" in den Spalten K bis M und die zweite Pivot-Tabelle zu "Datenquelle_2" steht in den Spalten P bis Q.
In der ersten Spalte der beiden Pivot-Tabelle wird das "Jahr" ausgegeben, in der zweiten die "Firma" - bei der ersten Pivot-Tabelle ist es die Firma_A und bei der zweiten Pivot-Tabelle ist es die Firma_B. In der dritten Spalte werden die Umsätze ausgegeben. Zusätzlich haben beiden Pivot-Tabellen zwei Berichtsfilter.
Nun möchte ich die Ergebnisse der Pivot-Tabellen in eine formatierte Tabelle einkopieren, die in den Spalten A bis C steht.
Dafür habe ich diesen Code geschrieben:
Sub Alle_Makros()
Daten_loeschen
Pivots_aktualisieren
Pivot1_einkopieren
Pivot2_einkopieren
End Sub
Sub Daten_loeschen()
On Error Resume Next
If MsgBox("Alle Daten löschen?", vbYesNo, "Alle Daten löschen") = vbYes Then
Range("Tabelle_Auswertung").Delete
End If
End Sub
Sub Pivots_aktualisieren()
Application.ScreenUpdating = False
' Alle Pivot-Tabellen im Tabellenblatt aktualisieren
Dim TB As Worksheet
Dim PT As PivotTable
Set TB = Worksheets("Auswertung")
For Each PT In TB.PivotTables
PT.RefreshTable
Next PT
Application.ScreenUpdating = True
End Sub
Sub Pivot1_einkopieren()
If Range("K6") = "(Leer)" Then
Exit Sub
Else
On Error GoTo 0
Range("K6").Activate
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Range("A3").Activate
ActiveSheet.Paste
Application.CutCopyMode = False
Application.ScreenUpdating = True
End If
End Sub
Sub Pivot2_einkopieren()
If Range("P6") = "(Leer)" Then
Exit Sub
Else
Application.ScreenUpdating = False
On Error Resume Next
Range("P6").Activate
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Range("A3").Activate
Selection.End(xlDown).Activate
ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate
ActiveSheet.Paste
Application.CutCopyMode = False
Application.Goto Reference:=Range("A1")
Application.ScreenUpdating = True
End If
End Sub
Nun meine Fragen:1) Wenn Datenquelle_1 leer ist und ich das Makro laufen lasse, dann werden Ergebnisse der Pivot2 nicht in die Tabelle einkopiert. Wie kann das gelöst werden?
2) Wenn ich mehr Berichtsfilter aufnehmen möchte, dann verschieben sich die Bezüge. Kann man die Bezüge im Code variabel schreiben?
Viele Grüße
Kisska