Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

GetPivotData

Betrifft: GetPivotData von: Dennis
Geschrieben am: 21.08.2014 11:06:48

Hallo liebe Forumsgemeinde,

Das Ein oder Andere bekomme ich mit viel ausprobieren in VBA mittlerweile hin, in diesem Fall bin ich allerdings an meine Grenzen gestoßen.

Mittels GetPivotData bekomme ich verschiedene Summen aus einer Pivottabelle ausgelesen, bis zu einer gewissen Ebene klappt es auch, aber ab hier habe ich keine Chance mehr:

=+PIVOTDATENZUORDNEN("Weighted Amount (converted)";$A$3;"Exp Billing Mth";DATUM(2014;7;1);
"Country Grouping";"Belgium")

Das ist die Formel die Excel mir gibt wenn ich die Zelle innerhalb eines Arbeitsblatts "ansteuer". Meine Übersetzung in VBA sieht folgendermaßen aus:

Ausgelesen werden soll die Zelle B6.

w = Worksheets("July").PivotTables(1).GetPivotData("Weighted Amount (converted)", Cells(3, 1), "Exp Billing Mth",
"Date(2014, 7, 1)", "Country Grouping", "Belgium", "Funnel Stage", "Best Few").Value

Die Zelle H6 bekomme ich ausgelesen über folgenden Code:

w = Worksheets("July").PivotTables(1).GetPivotData("Sum of Weighted Amount (converted)", "country grouping", "Belgium", "Funnel Stage", "Best Few").Value

Und was soll ich sagen, es will einfach nicht funktionieren. Es erscheint immer Laufzeitfehler '1004' Anwendungs oder Objektorientierter Fehler.

Über jegliche Hilfe von Euch wäre ich dankbar. Eine Beispieldatei habe ich angefügt, die Zahlen musste ich leider entfernen.

Vielen Dank vorab für Eure Hilfe!

Gruß

Dennis


  

Betrifft: AW: GetPivotData von: fcs
Geschrieben am: 21.08.2014 12:14:48

Hallo Dennis,

probiere es mal wie folgt:

w = Worksheets("July").PivotTables(1).GetPivotData("Weighted Amount (converted)", _
    "Exp Billing Mth", DateSerial(2014, 7, 1), "Country Grouping", "Belgium", _
    "Funnel Stage", "Best Few").Value _

Es hängt jetzt davon ab, was sich hinter den "Exp Billing Mth" Monatsangaben in Zeile 14 verbirgt. Echtes Datum (1.7.2014 formatiert als "MMM JJ") oder Text "Jul 14".

Gruß
Franz


  

Betrifft: AW: GetPivotData von: Dennis
Geschrieben am: 21.08.2014 13:27:49

Hallo fcs,

vielen Dank für Deine Hilfe, so hat es geklappt.

Gruß

Dennis


  

Betrifft: AW: GetPivotData von: Luschi
Geschrieben am: 21.08.2014 13:03:44

Hallo Dennis,

ich habe mir dafür folgenden Weg ausgedacht, da ich mich damit auch immer schwer tue:
- Makrorekorder anwerfen
- eine Zelle außerhalb der Pivottabelle selektieren
- mit dem '='-Zeichen einen Formeleintrag beginnen
- mit der Maus die Zelle in der Pivotabelle anwählen, die ich meine (natürlich sollte da ein Wert drin stehen)
- Entertaste
- Makrorekorder stoppen

In der Praxis sieht das dann so aus:
aufgezeichnete Formel vom Makrorekorder

    Range("K2").Select
    ActiveCell.FormulaR1C1 = _
        "=GETPIVOTDATA(""Summe - Umsatz"",R1C5,""Produkt"",""A"")"
Jetzt das in Vba nachbauen und das sieht dann so aus:

Dim v As Variant
v = ActiveSheet.PivotTables(1).GetPivotData("Summe - Umsatz", "Produkt", "A")
MsgBox v
Jetzt zeigen die Formel und die Variant-Variable das selbe Ergebnis an.
Erstaunlicher Weise wird die Zellangabe aus der Formel (bei mir R1C5 - also 'E1') in der Vba-Variante nicht gebraucht.

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: GetPivotData von: Dennis
Geschrieben am: 21.08.2014 13:20:52

Hi Luschi,

danke ersteinmal! Auf die Idee mit dem Makrorekorder hätte ich auch kommen können.

Wenn ich jetzt die Formel auf VBA anpasse wie folgt, erhalte ich folgende Fehlermeldung:

w = Worksheets("July").PivotTables(1).GetPivotData("Weighted Amount (converted)",R4C1,
"Exp Billing Mth",DATE(2014,8,1),"Country Grouping","Belgium","Funnel Stage","Best Few")

Fehler beim kompilieren:

Erwartet ) (und markiert dabei die 2014 im bei Date.

Danke für Eure Hilfe!

Dennis


  

Betrifft: AW: GetPivotData von: Luschi
Geschrieben am: 21.08.2014 15:33:21

Hallo Denis,

Du hast meinen Beitrag nicht richtig gelesen:

Erstaunlicher Weise wird die Zellangabe aus der Formel (bei mir R1C5 - also 'E1') in der Vba-Variante nicht gebraucht.
Gruß von Luschi
aus klein-Paris