VBA-自动化数据透视表 - 范围问题

时间:2017-11-09 16:44:03

标签: excel vba excel-vba pivot pivot-table

我正在尝试从我的工作簿的Sheet3上名为ProjectList的表(listobject)生成数据透视表。

我得到的内容如下,但是当我尝试运行它时收到错误消息(1004)。

Dim PivotTableCache As PivotCache
Dim PT As PivotTable

Worksheets("Pivot Table Category").Delete
Sheets.Add
ActiveSheet.Name = "Pivot Table Category"

Set PivotTableCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
        SourceData:=Range("ProjectList"))

Sheets("Pivot Table Category").Select

Set PT = PivotTableCache.CreatePivotTable(TableDestination:=Range(1, 1), _
        TableName:="PivotCategory")

`

我也尝试了一种变体,我在开头就介绍了以下内容

Dim PRange As Range
Set PRange = Sheet3.ListObjects("ProjectList").DataBodyRange

并在设置PivotCache时参考PRange,但这也不起作用。

我出错的任何想法?我有一个模糊的概念,它可能与sourcetype有关。

2 个答案:

答案 0 :(得分:0)

目的地的范围参考不正确。它应该是

Set PT = PivotTableCache.CreatePivotTable(TableDestination:=Cells(1, 1), TableName:="PivotCategory")
'OR
Set PT = PivotTableCache.CreatePivotTable(TableDestination:=Range("A1"), TableName:="PivotCategory")

答案 1 :(得分:0)

一举可以做到:

  Dim PT as PivotTable
  Set PT = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "ProjectList", Version:=xlPivotTableVersion14).CreatePivotTable (TableDestination _
        :="Pivot Table Category!R1C1", TableName:="PivotCategory", DefaultVersion:= _
        xlPivotTableVersion14)