【问题标题】:VBA: Creating a Pivot TableVBA:创建数据透视表
【发布时间】:2018-03-29 15:38:10
【问题描述】:

我之前能够在代码中创建数据透视表,但这会添加到新工作表中。我现在正在尝试将数据透视表添加到现有工作表,并收到错误消息“运行时错误 1004:数据透视表字段名称无效”。代码如下,我的错误从 ActiveWorkbook 开始并以 xlPivotTableVersion14 结束的最后一段开始。任何帮助将不胜感激。

Public Sub AlliedPT()

Dim AlliedData As String
Dim SAProw As Long
Dim PivotSheet As String

Sheets("Sheet1").Select
SAProw = Cells(Rows.Count, "A").End(xlUp).Row

Sheets("Sheet1").Select
ActiveWorkbook.Names.Add Name:="AlliedData", RefersTo:= _
    "=Sheet1!$A$1:$N$" & SAProw

Sheets("PivotSheet").Select
PivotSheet = ActiveSheet.Name

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
  "AlliedData", Version:=xlPivotTableVersion14).CreatePivotTable _
  TableDestination:=PivotSheet & "!R3C6", TableName:="PivotTable18", 
  DefaultVersion _
  :=xlPivotTableVersion14

End Sub

【问题讨论】:

  • 不相关,但是为什么你在DefaultVersion参数名称和你给它的:=xlPivotTableVersion14值之间放置一个换行符/继续?
  • 我按照宏记录器进行了该过程的该步骤。那可能应该删除
  • SourceData:="AlliedData" 相同 - 记录器非常适合生成糟糕的代码,您应该始终重新格式化它,使其至少具有最低限度的可读性 ;-) ...并替换所有.Select 带有对象引用和成员调用。
  • 我认为您应该检查 SSheet 1 中的第 1 行 A-N 列,并确保源数据中的每一列都有一个唯一的非空白列名。第一行包含数据透视表字段名称。
  • 哈哈,是的,宏记录器有时会让你失望。感谢Kaciree,你是个天才,这正是问题所在。一列没有标题

标签: vba excel


【解决方案1】:

我认为您应该检查 SSheet 1 中的第 1 行 A-N 列,并确保源数据中的每一列都有一个唯一的非空白列名。第一行包含数据透视表字段名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多