我怀疑一张表有多个Pivot表吗?如果有,有没有办法在表格中定义他们的名字?
我编写了以下代码来更新/刷新在不同工作表上定义的数据透视表,但是出现以下错误:
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
在相同excel的另一张表中输出Pivot程序,如表(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
===================================
如第一张表所示,只要表格(1)中有源数据,上述格式就必须出现在表格(2)的Excel中。
我希望使用Excel数据透视表概念创建宏程序。
您可以为上面的Pivot创建建议任何代码设置吗?
由于
答案 0 :(得分:3)
您可以在一张工作表中拥有多个数据透视表。创建它们,然后右键单击它们,选择“数据透视表选项...”并查看/更改它们的名称。通常你不需要这样做,因为Excel自动命名表格[PivotTable * N * ], N 为1,2, 3,......
但是,如果您经常更改其外观(例如添加或删除列和/或行),则应避免在单张工作表中使用多个数据透视表
编辑:回复你的评论...是的你可以......在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
指定您的数据透视表设计。
最好是开始录制宏,创建数据透视表,停止录制器并检查生成的代码。