Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
900to904
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Pivottabelle mit VBA erzeugen.

Pivottabelle mit VBA erzeugen.
30.08.2007 13:05:07
Jan
Moin,
der Franz hat mir schon sehr bei der Erstellung einer Pivottabelle via VBA geholfen. Nun ist meine Neugier geweckt da noch ein wenig tiefer in die VBA-Möglichkeiten-Höhle reinzukriechen.
Unten aufgeführt sind ColumnFields, PageFields und RowFields, die die Spaltenüberschriften aus der Tabelle1 in das dazugehörige Datenfeld der Pivottabelle zuordnet.
Kann ich auch die Daten für das Datenfeld auf diesem Weg erzeugen? Ich habe die Zeile Datafields:=Array(.PivotFields(6)) mal angehängt was allerdings nicht funktionierte aber vieleicht meine Idee verdeutlichen kann.
Ich möchte einfach die ersten 5 Variablen in die Column, Page und Row Felder verteilen und Variable 6 im Datenfeld anzeigen, da diese die Werte enthält.
Bei einer mögliche Lösung würden mich auch Formateinstellungen sehr interessieren (d.h. die Variablen im Datenfeld auf Anzahl, Summe oder Mittelwert setzen.
Hier ist das, was ich bisher (dank der Hilfe von Franz) hinbekommen habe.

Private Sub CommandButton1_Click()
Dim PivotTabelle As PivotTable
Dim wksPivot As Worksheet, Test As String
Set wksPivot = Worksheets("Tabelle1")
Set PivotTabelle = wksPivot.PivotTables("PivotTable2")
With PivotTabelle
.RefreshTable
.AddFields ColumnFields:=Array(.PivotFields(5)), _
PageFields:=Array(.PivotFields(1), _
.PivotFields(2), _
.PivotFields(3)), _
RowFields:=Array(.PivotFields(4))
End With
End Sub


Gruß
Jan

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivottabelle mit VBA erzeugen.
01.09.2007 22:14:00
Knut
Hallo !
Unten mal ein von mir geschriebenes Beispiel zur Pivottable erstellung.
Aufruf folgendermaßen (aus einem anderen Sub):
dname ist dabei der benannte Datenbereich, vorne die auszuwertenden werte und dann noch Blattname und Pivotablename
pivot "Aepfel","Geschaeft","Preis","Tabelle4","Apfelpreis","Datenbereich"

Sub pivot(xxx As String, yyy As String, zzz As String, Bname As String, tname As String, dname  _
As String)
Dim rngrange As Range, _
wks As Worksheet, boolv As Boolean, wkscount As Integer, pttable As PivotTable, _
strhit As String
Worksheets("Datenmatrix").Activate
' Aufstellen der Pivotmatrix Verbrauch
Set rngrange = Worksheets("Datenmatrix").UsedRange
' zunaechst schauen ob das Matrixtabellenblatt schon existiert
boolv = False
For Each wks In ActiveWorkbook.Worksheets
If wks.name = Bname Then
For Each pttable In wks.PivotTables
If pttable.name = tname Then
Exit Sub
Else
Application.DisplayAlerts = False
wks.Delete
Application.DisplayAlerts = True
Exit For
End If
Next pttable
End If
Next wks
' wenns noch nicht da ist wirds erstellt
wkscount = ActiveWorkbook.Worksheets.Count
ActiveWorkbook.Worksheets.Add After:=Worksheets(wkscount)
ActiveWorkbook.Worksheets(wkscount + 1).name = Bname
'erstellen des Pivottables
Worksheets(Bname).Activate
Worksheets(Bname).PivotTableWizard SourceType:=xlDatabase, _
SourceData:=rngrange, TableDestination:=Worksheets(Bname).Range("a1"), tablename:=tname
With ActiveSheet.PivotTables(tname)
.PivotFields(xxx).Orientation = xlPageField
.PivotFields(xxx).Orientation = xlRowField
.PivotFields(yyy).Orientation = xlColumnField
.PivotFields(zzz).Orientation = xlDataField
End With
' ausblenden des Blatts
' Worksheets("Monatsverbrauch").Visible = False
End Sub


Gruß,
Knut

Anzeige
AW: Pivottabelle mit VBA erzeugen.
01.09.2007 23:46:00
Herby
Hallo Jan,
nachstehende Variante zur Erstellung einer Pivottabelle erwartet den Datenbereich einschl. Überschriften im Bereich A1:E40. Die Pivottabelle wird in H8 erstellt mit dem Namen Pivot1. Danach werden alle Pivot-Felder mal aufgelistet. Über die Orientation-Eigenschaft werden die Pivotfelder den Feldtypen zugeordnet. So auch dem DataFields. Die Felder des DataFields-Typs kannst du z.B. mit
MsgBox .DataFields(1).Name analysieren.

Private Sub CommandButton1_Click()
Dim PC As PivotCache
Dim PT As PivotTable
Dim WKS As Worksheet
Dim Test As String
Dim anzahl As Integer
Dim i As Integer
Set WKS = Worksheets("Tabelle1")
' alte PT löschen
For Each PT In Me.PivotTables
PT.TableRange2.Clear
Next
Set PC = ThisWorkbook.PivotCaches.Add(xlDatabase, SourceData:=Range("A1:E40"))
Set PT = PC.CreatePivotTable([H8], "Pivot1")
With PT
For i = 1 To .PivotFields.Count
MsgBox "Namen der verfügbaren Pivot-Felder: " & .PivotFields(i).Name
Next i
.RefreshTable
.PivotFields("Filiale").Orientation = xlPageField
.PivotFields("Leiter").Orientation = xlPageField
.PivotFields("Leiter").Orientation = xlRowField
.PivotFields("Umsatz").Orientation = xlDataField
End With
End Sub


Ich hoffe dass dir das hilft.
Viele Grüße
Herby

Anzeige
AW: Pivottabelle mit VBA erzeugen.
03.09.2007 17:11:00
Jan
Danke euch beiden,
ich glaube ich habs verstanden. Werde das gleich mal ausprobieren.
Gruß
Jan

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige