【问题标题】:Pivot table creations数据透视表创建
【发布时间】:2012-12-17 07:30:34
【问题描述】:

我怀疑一张工作表可以有多个数据透视表吗?如果是这样,有什么方法可以在工作表中定义他们的名字吗?

我编写了以下代码来更新/刷新在不同工作表上定义的数据透视表,但出现以下错误:

 Dim objExcel1,strPathExcel1
 Dim objSheet1,objSheet2,objSheet3

 Set objExcel1 = CreateObject("Excel.Application")
 strPathExcel1 = "D:\AravoVB\Copy of Original    Scripts\CopyofGEWingtoWing_latest_dump_21112012.xls"

objExcel1.Workbooks.open(strPathExcel1)
Set objSheet1 = objExcel1.ActiveWorkbook.Worksheets("Business Process Matrix")
Set objSheet2 = objExcel1.ActiveWorkbook.Worksheets("Workflow Status Matrix")
Set objSheet3 = objExcel1.ActiveWorkbook.Worksheets("Business Hierarchy Martix")

objSheet1.PivotTables(1).PivotCache.Refresh
objSheet2.PivotTables(1).PivotCache.Refresh
objSheet3.PivotTables(1).PivotCache.Refresh

错误: 下标超出范围

你能帮帮我吗?

更新

我有以下格式的 Excel 数据表:

Name   Fruits    Condition of Fruits
=====  ======    ====================

Ram    Apple       Good

Jadu   Apple       Bad

Tina   Orange      Good

Ram    Orange      Good

Tina   Apple       Bad

Ram    Apple       Bad

Pivot 程序在同一个 excel 的另一张表中的输出,比如在 sheet(2) 中应该是 像这样:

Name  Fruits   Condition of Fruits
====  ======   ===================
               Good       Bad    Total
               ====      =====  ======
Ram   Apple     1           1     2
Ram   Orange    1           0     1
Tina  Apple     0           1     1
Tina  Orange    1           0     1
jadu  Apple     0           1     1
===================================
Grand Total     3           3     6
===================================

上述格式需要存在于工作表 (2) 的 Excel 中,只要工作表 (1) 中包含源数据,如第一个表所示。

我希望使用 Excel 数据透视表概念创建宏程序。

您能否为上述 Pivot 创建建议任何代码设置?

谢谢

【问题讨论】:

  • 请看我的更新!并帮助我解决问题。
  • 能否建议我在这里需要做些什么来消除此类错误?
  • 请使用调试器查看究竟是哪条语句导致了错误。我现在在推测......在像 PivotTables() 这样的集合中,第一个索引元素的索引为 0,所以也许 - 如果每张表只有 1 个表,则索引 = 1 高于您所拥有的,因此“下标超出范围”

标签: excel vbscript excel-2007 vba


【解决方案1】:

您可以在一张工作表中拥有多个数据透视表。创建它们,然后右键单击它们,选择“数据透视表选项...”并查看/更改它们的名称。通常您不需要这样做,因为 Excel 会自动命名表 [PivotTable*N*],其中 N 为 1、2、 3、……

但是,如果您经常更改它们的外观(例如添加或删除列和/或行),则应避免在单个工作表中包含多个 Pivot

编辑:响应您的评论...是的,您可以...在 Excel2010.VBA 中,相关的对象/方法是

ActiveWorkbook.PivotCaches.Create(SourceType:=..., SourceData:= ..., Version:=...).CreatePivotTable TableDestination:=..., TableName:=..., DefaultVersion:=...

源数据通过 PivotCache 对象定义,目标数据通过串联的 CreatePivotTable 方法定义。

以后你用

ActiveSheet.PivotTables(...).PivotFields(...).Orientation and .position

ActiveSheet.PivotTables(...).AddDataField ...PivotFields(...), "header", xlSum

指定您的数据透视表设计。

最好是开始录制宏,创建数据透视表,停止录制器并检查生成的代码。

【讨论】:

  • 感谢您的帮助,但我还有一个疑问,我们可以通过编程方式创建数据透视表吗?
  • 下标错误怎么办?你修好了吗?请打开一个新请求,而不是更新此案例并更改主题。对于您的新问题,我建议您在宏记录器的控制下手动创建示例数据透视表,并检查生成的代码。
  • 是的,该问题已解决,我使用数据透视表名称代替下标。
猜你喜欢
  • 1970-01-01
  • 2022-01-03
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
  • 2020-03-30
相关资源
最近更新 更多