2016-07-14 6 views
1

Ich versuche, Felder automatisch zu einer bereits erstellten Pivot-Tabelle hinzuzufügen. Die Felder würden "Summe der Periode 1" ... "Summe der Periode 360" sein. Ich habe bereits die Perioden 1-60, aber ich vermisse 61-360. Es wird mühsam sein, 300 Mal manuell nach unten zu ziehen. Also schrieb ich einen Makro, aber ich habe den Fehler: nicht in der Lage zu schwenken Artikel Eigenschaft der Pivot-Feld KlassePivot-Tabelle Erweitern "Werte" VBA

Da die Pivot-Tabelle bereits erstellt wird (es ist ein großer Tisch mit vielen Format Macken), ich don Ich möchte nichts ändern. Ich möchte nur die Perioden als Summe der Werte aus Periode 61-Periode 360 ​​hinzufügen.

Ich habe meinen Code beigefügt. Jede Hilfe, die jemand mir geben kann, wird sehr geschätzt werden, da ich nicht weiß, was ich falsch mache, und ich versuche, nicht zu frustriert zu werden.

Vielen Dank im Voraus.

Hier ist mein Code:

'--------------------- Expand_Pivot_to_360M Macro-------------------' 

Sub Expand_Pivot_to_360M() 

' Setting Pivot field classes to the "unable to get pivot items property of the pivot field class" error 
    Sheets("Monthly Summary").Select 

    With ActiveSheet.PivotTables("PivotTable1").PivotFields("universe") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("buckets_break") 
     .Orientation = xlRowField 
     .Position = 2 
    End With 
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("pool_name") 
     .Orientation = xlRowField 
     .Position = 3 
    End With 
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("gl_company_code") 
     .Orientation = xlRowField 
     .Position = 4 
    End With 
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("LEP") 
     .Orientation = xlRowField 
     .Position = 5 
    End With 

Schleife Pivit 360 Perioden

' Using a Loop to Expand Pivot for 360 periods 
    Dim i As Integer 

     For i = 61 To 360  ' start at period 61 since periods 1 to 60 already include in pivot 

      Sheets("Monthly Summary").Select 
      ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables(_ 
       "PivotTable1").PivotFields("Period_i"), "Sum of Period_i", xlSum 
      With ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Period_i") 
       .Caption = "Count of Period_i" 
       .Function = xlCount 
      End With 
      With ActiveSheet.PivotTables("PivotTable1").PivotFields("Count of Period_i") 
       .Caption = "Sum of Period_i" 
       .Function = xlSum 
      End With 

     Next i 

End Sub 
+0

ersetzen '_i„'mit' _“& I' – Slai

+0

danke, ich habe das und nicht mehr bekommen, die„nicht in der Lage zu schwenken Artikel Eigentum zu erhalten .. . "Fehler, aber ich bekomme einen weiteren Fehler: anwendungsdefinierter oder objektdefinierter Fehler." Bitte lassen Sie mich wissen, wenn Sie helfen können, irgendwelche Ideen, um das zu beheben? Danke –

Antwort

0

Sie haben eine Menge von Fremdcode von der Makroaufzeichnung erzeugt zu erweitern. Außerdem erhalten Sie möglicherweise die Meldung "anwendungsdefinierter oder objektdefinierter Fehler", da mindestens eines der Felder, die Sie hinzufügen möchten, bereits vorhanden ist.

ich das vorschlagen würde ...

Dim i as Integer 
Dim found as Boolean 
Dim aPItem as PivotItem 
With Sheets("Monthly Summary").PivotTables("PivotTable1") 
    For i = 61 to 360 
     found = false 
     For Each aPItem In .DataPivotField.PivotItems 'Check field not already there 
      If aPItem.Caption = "Sum of Period_" & i Then 
       found = True 
       Exit For 
      End If 
     Next aPItem 

     If Not found then 'add field 
      .AddDataField .PivotFields("Period_" & i), "Sum of Period_" & i, xlSum 
     End If 
    Next i 
End With