选择数据透视表的行和列

时间:2018-09-27 15:37:55

标签: excel vba pivot

enter image description here我需要选择数据透视表范围以复制到另一个电子表格的帮助。我需要做的是复制将要搜索的特定“ Project WBS”值的所有行和列。

在下面的代码中,我尝试使用xlDataAndLabel,但它只为我提供了所需的Project WBS和Pivot项目。它省略了“描述”,“员工”和“活动类型”列。我不能使用.EntireRow.Copy,因为当我转到另一个工作簿进行粘贴时,我收到一条错误消息,指出大小太大。

非常感谢您的帮助。

最大

Sub getPivotData()

Dim PvtTbl As PivotTable
Set PvtTbl = Worksheets("Aug 18 Report").PivotTables("PivotTable1")
Worksheets("Aug 18 Report").Activate

Application.PivotTableSelection = True
PvtTbl.PivotSelect "GS136.548", xlDataAndLabel
Selection.Interior.Color = vbYellow
End Sub

1 个答案:

答案 0 :(得分:1)

您可以尝试将目标标签范围调整为数据透视表中的列数

例如

Option Explicit
Public Sub test()
    Dim pvt As PivotTable, rng As Range
    Set pvt = ActiveSheet.PivotTables(1)
    With pvt.PivotFields("Project WBS").PivotItems("A").LabelRange
        Set rng = Worksheets(pvt.Parent.Name).Range(.Resize(.Rows.Count, pvt.TableRange1.Columns.Count).Address)
        Debug.Print rng.Address
    End With
End Sub

以下突出显示的区域是打印语句返回的地址

enter image description here


如果在不同的(打开的)工作簿中引用枢轴,以下是一个示例:

Option Explicit
Public Sub test()
    Dim pvt As PivotTable, rng As Range
    Dim wb As Workbook, ws As Worksheet
    Set wb = Workbooks("Book3.xlsb")
    Set ws = wb.Worksheets("Sheet1")
    Set pvt = ws.PivotTables(1)
    With pvt.PivotFields("Project WBS").PivotItems("A").LabelRange
        Set rng = ws.Range(.Resize(.Rows.Count, pvt.TableRange1.Columns.Count).Address)
        Debug.Print rng.Address
    End With
End Sub