我每周更换源数据,并附加许多数据透视表 . 但是,当我刷新表时,他们开始错过一些数据 . 所以,我继续记录了一些“宏”,每次创建和替换新的数据透视表 . 粘贴的区域将保持不变,我给他们足够的周围空间,永远不会重叠 . 不幸的是,我遇到了很多错误,根本不适合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
1 回答
您真的不需要重新创建数据透视表 . 您需要在刷新数据后找出数据透视表中数据丢失的原因 . 这样做的工作量很少 .
我怀疑数据透视表是从一个范围获取数据,当您刷新数据时,新数据的行数比旧数据多,因此数据透视表会错过额外的行 .
确保您透视表的最佳方法是基于一个范围,该范围对于您放入工作表的所有当前和未来数据都有足够的行 .
检查数据透视表 .
点击数据透视表
in功能区>数据透视表工具>分析>数据>更改数据源,您可以查看范围(并更改)
请告诉我你是怎么过的 .
将来您可能会考虑使用excel表(也称为ListObjects)
例如
选择包含数据的范围
单击功能区>“插入”>“表格”按钮,将范围转换为Excel表格 .
将数据透视表更改为引用表中的数据
更改刷新数据的方式 .
由于您是excel的新手,我现在不会使用Excel表,先让它工作,然后将其转换为使用它们 .
我希望这有帮助 . 哈维