Excel 透视表创建

Excel 透视表创建,excel,vbscript,excel-2007,vba,Excel,Vbscript,Excel 2007,Vba,我怀疑一张工作表是否可以有多个数据透视表?如果是,有没有办法在工作表中定义他们的名字 我编写了以下代码来更新/刷新在不同工作表上定义的透视表,但出现以下错误: Dim objExcel1,strPathExcel1 Dim objSheet1,objSheet2,objSheet3 Set objExcel1 = CreateObject("Excel.Application") strPathExcel1 = "D:\AravoVB\Copy of Original Scrip

我怀疑一张工作表是否可以有多个数据透视表?如果是,有没有办法在工作表中定义他们的名字

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

 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的另一个工作表中的输出(如工作表(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创建建议任何代码设置吗


谢谢

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

但是,如果经常更改多个轴的外观(例如添加或删除列和/或行),则应避免在单个图纸中使用多个轴

编辑:回应你的评论。。。是的,你可以。。。在Excel2010.VBA中,相关对象/方法包括

ActiveWorkbook.PivotCaches.Create(SourceType:=..., SourceData:= ..., Version:=...).CreatePivotTable TableDestination:=..., TableName:=..., DefaultVersion:=...
源数据是通过数据透视缓存对象定义的,目标数据是通过连接的CreatePivotTable方法定义的

以后你用

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

指定透视表设计的步骤


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

谢谢您的帮助,但我还有一个疑问,我们可以通过编程方式创建透视表吗?下标错误怎么办?你修好了吗?请打开新请求,而不是更新此案例和更改主题。对于您的新问题,我建议您在宏记录器的控制下手动创建示例pivot表(如上所述),并检查生成的代码。是的,该问题已得到解决,我使用pivot表名称代替了下标。请参阅我的更新!并帮助我解决此问题。是否可以建议我需要在此处执行哪些操作以消除此类错误?请使用调试器查看导致错误的确切语句。我现在在猜测。。。在像PivotTables()这样的集合中,第一个索引元素的索引为0,因此,如果每张工作表只有一个表,那么index=1可能比您的索引高,因此“下标超出范围”
ActiveSheet.PivotTables(...).AddDataField ...PivotFields(...), "header", xlSum