从数据透视表中提取数据

时间:2017-05-31 16:41:19

标签: excel vba excel-vba

我设置了一个数据透视表(参见图片以获得更好的想法)。我正在尝试根据国家/地区从数据透视表中提取数据。您可以看到行国家/地区可以访问行区域,行区域可以访问行产品。我想在以下约束条件下复制数据:France以获取区域,所有产品和价格总和,并将其移至sheet2。

我的想法是如何解决这个问题,但当前的属性/方法不支持select方法。我怎样才能选择法国的所有数据?

Sheets("MY Pivot").PivotTables("MY_Pivot").PivotFields("Country").PivotItems("France" _
    ).ShowDetail = True 'Show pivot item

Sheets("MY Pivot").PivotTables("MY_Pivot").PivotFields("Country").PivotItems("France" _
    ).Select 'Select pivot item to copy

Selection.Copy 'Copy the pivot items
Sheets("Sheet2").Range("A1").Select 'Select sheet cell for paste
Sheets("Sheet2").Paste 'Paste the selected France results

Pivot Table

1 个答案:

答案 0 :(得分:1)

您可以将.PivotItems("France").DataRange.EntireRow复制到“Sheet2”,而无需使用Select

<强> 代码

Option Explicit

Sub CopyPivotItemDataRange()

Dim PvtTbl As PivotTable
Dim PvtFld As PivotField

' set the Pivot Table object
Set PvtTbl = Sheets("MY Pivot").PivotTables("MY_Pivot")
' set the Pivot Field object
Set PvtFld = PvtTbl.PivotFields("Country")

With PvtFld
    .PivotItems("France").ShowDetail = True 'Show pivot item

    ' copy >> paste the entire Range data under "France" to "Sheet2"
    .PivotItems("France").DataRange.EntireRow.Copy Destination:=Sheets("Sheet2").Range("A1")
End With

End Sub