我正在尝试使用getpivotdata将某些特定的数据透视表数据复制到数据表中。如果没有子标题,我可以做到。但是,当有子标题时,我会在运行代码时遇到问题。
我尝试了许多不同的方法,但无济于事,请帮助。我相信我错过了getpivotdata括号中的内容。请看一下代码
Error i get from Damian's Answer
当我不包含副标题时,它就起作用。
Dim PT As PivotTable
Set PT = Sheet2.PivotTables("PivotTable2")
Range("C28").Value = PT.GetPivotData("Profit", "Region", "2", "Department", "107").Value
当我包含如下所示的副标题时,它不起作用。它会给我错误1004(应用程序定义或对象定义的错误)
Dim PT As PivotTable
Set PT = Sheet2.PivotTables("PivotTable2")
Range("C28").Value = PT.GetPivotData("Profit", "Region", "2", "Department", "107", "Staff", "Jim").Value
我希望它可以显示单元格C28中Jim Staff下的数据,但现在我只能获取107的同一部门下所有职员的数据。
答案 0 :(得分:0)
就像我告诉你的那样,就像将所有过滤器带到这样的行一样简单:
通过以下方式使用此代码:
Option Explicit
Sub Test()
Dim PT As PivotTable
With ThisWorkbook.Sheets("Test")
Set PT = .PivotTables("Test")
.Cells(1, 1) = PT.GetPivotData("Profit", "Region", "2", "Department", "107", "Staff", "Jim").Value
End With
End Sub
如您所见,给我吉姆在单元格A1上的利润值。请注意,执行此操作时,过滤器具有优先级。在这种情况下,您始终必须先过滤区域,然后再过滤部门,最后过滤人员。
顺序无关紧要,但是要获取人员数据,必须同时提供地区和部门。
要获取部门数据时,只需提供地区和部门。最后,如果您只需要按地区划分数据,则只需提供de Region。
希望有帮助。
答案 1 :(得分:0)
添加一些错误测试代码后,该代码终于可以工作了。
Sub Test()
Dim PT As PivotTable
Dim wkSheet As Worksheet
Set wkSheet = Worksheets("Sheet2")
wkSheet.Activate
With ThisWorkbook.Sheets("Sheet2")
Set PT = .PivotTables("PivotTable2")
Sheets("Sheet2").Range("C30").Select
On Error Resume Next
.Cells(30, 5) = PT.GetPivotData("Profit", "Region", "5", "Department", "109", "Staff", "John").Value
'Your Line here which causes 1004 error
If Err.Number > 0 Then
Debug.Print Err.Number & ":" & Err.Description
End If
End With
End Sub```