【发布时间】:2015-08-09 12:00:22
【问题描述】:
我每周都会更换源数据,并附有许多数据透视表。但是,当我刷新表格时,它们开始丢失一些数据。因此,我继续记录了一些“宏”,以每次创建和替换新的数据透视表。粘贴的区域将保持不变,我给了它们足够的周围空间,使它们永远不会重叠。不幸的是,我遇到了很多错误,而且根本不擅长使用 VBA。我只知道论坛等。
源数据在“CopyData”上 国家/地区数据透视表应位于“国家/地区”
所以我的问题是: 1.如何创建一个 VBA 脚本来创建和替换数据透视表,并且可以在之后多次使用(所以也许从删除旧的数据透视表开始?) 2. 如何保持数据透视表的名称通用?我不知道下一个数据透视表在运行时会调用什么
任何帮助都会很棒!
下面是我的“宏”之一的代码,它应该创建和替换两个数据透视表。
Sub Pivots_Country()
' Pivots_Country Macro
'
'
Range("B215").Select
ActiveWorkbook.Worksheets("Region").PivotTables("PivotTable10").PivotCache. _
CreatePivotTable TableDestination:="Sheet1!R2C2", TableName:="PivotTable10" _
, DefaultVersion:=xlPivotTableVersion14
Sheets("Sheet1").Select
Cells(2, 2).Select
ActiveSheet.PivotTables("PivotTable11").AddDataField ActiveSheet.PivotTables( _
"PivotTable11").PivotFields("storeId"), "Count of storeId", xlCount
With ActiveSheet.PivotTables("PivotTable11").PivotFields("NewCountry")
.Orientation = xlRowField
.Position = 1
End With
Sheets("CopyData").Select
Range("B10").Select
ActiveWorkbook.Worksheets("Sheet1").PivotTables("PivotTable11").PivotCache. _
CreatePivotTable TableDestination:="Sheet1!R4C6", TableName:="PivotTable12" _
, DefaultVersion:=xlPivotTableVersion14
Sheets("Sheet1").Select
Cells(4, 6).Select
With ActiveSheet.PivotTables("PivotTable12").PivotFields("plan")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable12").PivotFields("planCode")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable12").PivotFields("NewCountry")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable12").AddDataField ActiveSheet.PivotTables( _
"PivotTable12").PivotFields("storeId"), "Count of storeId", xlCount
ActiveWindow.SmallScroll Down:=-7
Range("B2:C56").Select
Selection.Copy
Sheets("Country").Select
Range("B4").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=7
ActiveWindow.SmallScroll ToRight:=-2
ActiveWindow.SmallScroll Down:=-2
ActiveWindow.SmallScroll ToRight:=-1
ActiveWindow.SmallScroll Down:=-1
ActiveWindow.SmallScroll ToRight:=-2
ActiveWindow.SmallScroll Down:=-30
Sheets("Sheet1").Select
ExecuteExcel4Macro "(""PivotTable12"",""planCode"",3,FALSE,TRUE)"
Range("F2:P52").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Country").Select
ActiveWindow.SmallScroll ToRight:=3
ActiveWindow.SmallScroll Down:=-1
ActiveWindow.SmallScroll ToRight:=2
Range("R3").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=1
Range("Q15").Select
Sheets("Sheet1").Select
Cells.Select
Range("F2").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Range("J11").Select
Sheets("CopyData").Select
End Sub
【问题讨论】:
-
不,那没有用。我得到的第一个错误是关于第一行中的 Active.Workbook.Worksheets("Region") 。我有 5 个左右这样的宏,它们似乎都在不同的时间和不同的场合出错。数据中没有过滤器,我尝试在运行宏之前删除旧的数据透视表,所以我不会收到该错误。但我似乎仍然发现自己一团糟。
标签: vba excel pivot-table