Mam stół obrotowy do agregatu {X0}} na "part" tylko dla zaakceptowanych części.

enter image description here

Chcę, aby wyodrębnić "sum of coverage" do innego arkusza. Napisałem następujące makro:

Sub Pull_data()
'Update the pivot table
Sheets("Pivot").PivotTables("PivotTable2").PivotCache.Refresh
'clear all filters
Sheets("Pivot").PivotTables("PivotTable2").PivotFields("Accepted").ClearAllFilters
'filters only accepted items
Sheets("Pivot").PivotTables("PivotTable2").PivotFields("Accepted").CurrentPage = "YES"
'get the last row of the pivot table
Set PT = Sheets("Pivot").PivotTables("PivotTable2")
With PT.TableRange1
    lngLastRow = .rows(.rows.Count).Row
End With
For i = 4 To lngLastRow
    'copy the coverage to destination sheet
    NEWi = i + 10
    Sheets("Destination").Range("G" & NEWi) = PivotTable.GetPivotData(data_field, Range("I" & i), “Coverage”)
Next i
End Sub

Uzyskam błąd czasu pracy "424", wymagany obiekt

Sheets("Destination").Range("G" & NEWi) = PivotTable.GetPivotData(data_field, Range("I" & i), “Coverage”)

Który byłby właściwy sposób na napisanie tej linii?

5
L.Dutch 17 luty 2017, 16:39

1 odpowiedź

Możesz spróbować skopiowania całej kolumny z {x0}} po tym, jak jest filtrowane do swoich potrzeb, z TableRange2, użyj Resize do jednej kolumny, a następnie Copy i Copy i Copy i Copy i Copy i Copy X4}} do arkusza docelowego.

Jeśli poniższy kod podejmuje niewłaściwą kolumnę, możesz również użyć Offset(0,1), aby uzyskać odpowiednią.

With PT
    .TableRange2.Resize(.TableRange2.Rows.Count, 1).Copy
    Worksheets("Destination").Range("G14").PasteSpecial xlValues '<-- start Pasting from Row 14
End With

Uwaga : Jeśli powyższy kod pobiera kolumnę w lewo, spróbuj poniższej linii kodu:

.TableRange2.Resize(.TableRange2.Rows.Count, 1).Offset(, 1).Copy
2
Shai Rado 17 luty 2017, 14:38