Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1400to1404
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hilfe bei vermutlich einfachem Makro gesucht

Hilfe bei vermutlich einfachem Makro gesucht
06.01.2015 11:46:28
Philipp
Guten Tag zusammen,
ich ziehe täglich eine Liste aus einem Buchhaltungsprogramm und möchte täglich die gleiche Auswertung via Pivot erhalten. Die Beispieltabelle habe ich hochgeladen https://www.herber.de/bbs/user/94776.xls.
Im Pivot-Ergebnis möchte ich wissen, welcher Kunde (Spalte D) in welcher Filiale (Leistung Organisationseinheit) welchen Umsatz (Leistung Element Preis) gemacht hat und wie viele Leistungen er gekauft hat. Das Zahlenformat beim Umsatz soll auf x.xxx formatiert werden.
Bisherige Schritte:
Einfügen Pivot-Tabelle
Felderauswahl
1. Leistung Organisationseinheit
2. Leistung Element Preis
3. Kunde (fufhgfg/Kundü Figkünnfkü)
4. Leistung Element Preis nochmal manuell in die Summenwerte ziehen
Spalte C umformatieren in Zahl mit o Dezimalstellen und 1.000er-Trennzeichen
Spalte D Wertfeldeinstellungen Summe von Leistung Element Preis2 auf Anzahl ändern
Spaltenbreite C und D manuell auf ca. 11px ändern
Ergbenis siehe sheet Pivot1
Lassen sich die Schritte nicht auch irgendwie automatisieren? Meine Makroversuche schlagen fehl mit "Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs :-(
wobei der fett markierte Bereich (ab Zeile 8 "ActiveWorkbook.Worksheets("Pivot1")... "
gelb markiert ist.
Vielen Dank für Eure Hilfe
Philipp Fahrenkrog
Sub Makro2()
' Makro2 Makro
' Tastenkombination: Strg+w
Sheets.Add
ActiveWorkbook.Worksheets("Pivot1").PivotTables("PivotTable2").PivotCache. _
CreatePivotTable TableDestination:="Tabelle3!R3C1", TableName:= _
"PivotTable3", DefaultVersion:=xlPivotTableVersion10
Sheets("Tabelle3").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable3").PivotFields( _
"Leistung Organisationseinheit")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
"PivotTable3").PivotFields("Leistung Element Preis"), _
"Summe von Leistung Element Preis", xlSum
With ActiveSheet.PivotTables("PivotTable3").PivotFields( _
"fufhgfg/Kundü Figkünnfkü")
.Orientation = xlRowField
.Position = 2
End With
ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
"PivotTable3").PivotFields("Leistung Element Preis"), _
"Summe von Leistung Element Preis2", xlSum
With ActiveSheet.PivotTables("PivotTable3").DataPivotField
.Orientation = xlColumnField
.Position = 1
End With
Columns("C:C").Select
Selection.NumberFormat = "#,##0"
Range("D10").Select
With ActiveSheet.PivotTables("PivotTable3").PivotFields( _
"Summe von Leistung Element Preis2")
.Caption = "Anzahl von Leistung Element Preis2"
.

Function = xlCount
End With
Columns("C:D").Select
Selection.ColumnWidth = 10.29
Sheets("Tabelle3").Select
Sheets("Tabelle3").Name = "Ergebnis mit Makro"
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ganz so leicht ist es nun auch nicht
06.01.2015 12:13:59
Jack_d
Hallo Philipp
anbei mal ein rudimentärer Code auf dem du aufbauen kannst. Es erstellt in deiner Mustermappe die Pivot (bisher aber nur 1 Spalte und die Zeilenbeschriftung)
Es müsste aber wie in den Anmerkungen notiert noch einige Dinge gemacht werden. bsp Dimmen, Blattprüfen etc.
Sub Makro2()
' Makro2 Makro
' Tastenkombination: Strg+w
' Hier müssen die Vatriablen noch gedimmt werden
'Variablen definieren
x = "Pivotauswertung"
LZeile = Worksheets("Sheet0").Cells(Rows.Count, 1).End(xlUp).Row
LSpalte = Worksheets("Sheet0").Cells(LZeile, Columns.Count).End(xlToLeft).Column
'Blatt erstellen -> hier muss noch geprüft werden vorhanden /nicht vorhanden
Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = x
'Pivot erstellen
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet0!R9C1:R" & LZeile & "C" & LSpalte & "", Version:=xlPivotTableVersion14). _
CreatePivotTable _
TableDestination:="" & x & "!R3C1", TableName:=x, _
DefaultVersion:=xlPivotTableVersion14
'Zeilenbeschriftung
With Worksheets(x).PivotTables(x).PivotFields("Leistung Organisationseinheit")
.Orientation = xlRowField
.Position = 1
End With
'Spalte Summe Leistung Preise
Worksheets(x).PivotTables(x).AddDataField _
Worksheets(x).PivotTables(x).PivotFields("Leistung Element Preis"), "Summe von Leistung  _
Element Preis", xlSum
End Sub
Grüße

Anzeige
Da es nicht soo lang war
06.01.2015 12:28:47
Jack_d
hab ich es mal fertig gemacht
Sub Makro2()
' Makro2 Makro
' Tastenkombination: Strg+w
Dim x As String
Dim LZeile As Long, LSpalte As Long
Dim wks As Worksheet
'Variablen definieren
x = "Pivotauswertung"
LZeile = Worksheets("Sheet0").Cells(Rows.Count, 1).End(xlUp).Row
LSpalte = Worksheets("Sheet0").Cells(LZeile, Columns.Count).End(xlToLeft).Column
' Abfrage ob Blatt existiert
For Each wks In Worksheets
If wks.Name = x Then
Application.DisplayAlerts = False
Worksheets(x).Delete
Application.DisplayAlerts = True
End If
Next wks
'Blatt erstellen
Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = x
'Pivot erstellen
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet0!R9C1:R" & LZeile & "C" & LSpalte & "", Version:=xlPivotTableVersion14). _
CreatePivotTable _
TableDestination:="" & x & "!R3C1", TableName:=x, _
DefaultVersion:=xlPivotTableVersion14
'Zeilenbeschriftung 1
With Worksheets(x).PivotTables(x).PivotFields("Leistung Organisationseinheit")
.Orientation = xlRowField
.Position = 1
End With
'Zeilenbeschriftung 2
With Worksheets(x).PivotTables(x).PivotFields("fufhgfg/Kundü Figkünnfkü")
.Orientation = xlRowField
.Position = 2
End With
'Spalte Summe Leistung Preise
With Worksheets(x).PivotTables(x)
.AddDataField Worksheets(x).PivotTables(x).PivotFields("Leistung Element Preis"), " _
Summe von Leistung Element Preis", xlSum
.PivotFields("Leistung Element Preis").NumberFormat = "0.00"
End With
'Spalte Anzahl Leistung Preise
With Worksheets(x).PivotTables(x)
.AddDataField Worksheets(x).PivotTables(x).PivotFields("Leistung Element Preis"), " _
Anzahl von Leistung Element Preis", xlCount
.PivotFields("Leistung Element Preis").NumberFormat = "0.00"
End With
End Sub

Anzeige
AW: Da es nicht soo lang war
06.01.2015 13:50:55
Philipp
Großartig. Ganz vielen Dank für die Hilfe!!

Danke für die Rückmeldung owT
06.01.2015 14:37:28
Jack_d
ohne weiteren Text

AW: Hilfe bei vermutlich einfachem Makro gesucht
06.01.2015 12:21:33
Rudi
Hallo,
Sub Makro2()
Dim strSource As String
Application.ScreenUpdating = False
With ActiveSheet
strSource = "'" & .Name & "'!" & .Cells(9, 1).CurrentRegion.Address(, , xlR1C1)
End With
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
strSource, Version:=xlPivotTableVersion10).CreatePivotTable _
TableDestination:=ActiveSheet.Name & "!R3C1", TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion10
With ActiveSheet.PivotTables(1).PivotFields("Leistung Organisationseinheit")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables(1).AddDataField ActiveSheet.PivotTables(1) _
.PivotFields("Leistung Element Preis"), _
"Summe von Leistung Element Preis", xlSum
With ActiveSheet.PivotTables(1).PivotFields( _
"fufhgfg/Kundü Figkünnfkü")
.Orientation = xlRowField
.Position = 2
End With
ActiveSheet.PivotTables(1).AddDataField ActiveSheet.PivotTables(1) _
.PivotFields("Leistung Element Preis"), "Summe von Leistung Element Preis2", xlSum
With ActiveSheet.PivotTables(1).DataPivotField
.Orientation = xlColumnField
.Position = 1
End With
Columns("C:C").Select
Selection.NumberFormat = "#,##0"
Range("D10").Select
With ActiveSheet.PivotTables(1).PivotFields("Summe von Leistung Element Preis2")
.Caption = "Anzahl von Leistung Element Preis2"
.Function = xlCount
End With
Columns("C:D").Select
Selection.ColumnWidth = 10.29
ActiveSheet.Name = "Pivot"
End Sub

Gruß
Rudi

Anzeige
etwas kompakter
06.01.2015 12:56:18
Rudi

Sub Makro2()
Dim strSource As String
Dim objPT As PivotTable
Application.ScreenUpdating = False
With ActiveSheet
strSource = "'" & .Name & "'!" & .Cells(9, 1).CurrentRegion.Address(, , xlR1C1)
End With
Sheets.Add
Set objPT = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
strSource, Version:=xlPivotTableVersion10).CreatePivotTable _
(TableDestination:=ActiveSheet.Name & "!R3C1", TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion10)
With objPT.PivotFields(2)
.Orientation = xlRowField
.Position = 1
End With
With objPT.PivotFields(4)
.Orientation = xlRowField
.Position = 2
End With
objPT.AddDataField _
objPT.PivotFields(1), "Summe von Leistung Element Preis", xlSum
objPT.AddDataField _
objPT.PivotFields(1), "Anzahl von Leistung Element Preis", xlCount
With objPT.DataPivotField
.Orientation = xlColumnField
.Position = 1
End With
Columns("C:C").NumberFormat = "#,##0"
Columns("C:D").ColumnWidth = 10.29
ActiveSheet.Name = "Pivot"
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige