我的宏应该创建一个数据透视表并添加特定的过滤器。我为此使用了宏录制器,它适用于我的计算机,但不适用于较新版本的 excel。这是我的代码:
Cells.Select
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"1!R1C1:R1048576C13", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Tabelle2!R3C1", TableName:="PivotTable2", _
DefaultVersion:=xlPivotTableVersion14
Sheets("Tabelle2").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable2").PivotFields("PlatzID/Gerät")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
"PivotTable2").PivotFields("Tagabfluss"), "Anzahl von Tagabfluss", xlCount
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Anzahl von Tagabfluss" _
)
.Caption = "Summe von Tagabfluss"
.Function = xlSum
End With
我试图将Version:=xlPivotTableVersion14
更改为用于其他 excel 版本的 Version:=xlPivotTableVersion15
和其他数字,但似乎都不起作用。
我正在使用 Excel 2010,我的同事正在使用 Excel 2013。调试功能突出显示:
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"1!R1C1:R1048576C13", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Tabelle2!R3C1", TableName:="PivotTable2", _
DefaultVersion:=xlPivotTableVersion14
首先,您确实不应该将整列用于数据透视表的源数据。其次,将代码分解为离散部分将帮助您缩小错误的范围,错误是在创建数据透视缓存还是数据透视表本身。我建议使用:
Dim pivotSheet As Worksheet
Set pivotSheet = Sheets.Add
With Sheets("1")
Dim pc As PivotCache
Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:="'" & .Name & "'!" & .Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1), _
Version:=xlPivotTableVersion14)
End With
Dim pt As PivotTable
Set pt = pc.CreatePivotTable(TableDestination:=pivotSheet.Cells(3, 1), DefaultVersion:=xlPivotTableVersion14)
With pt
With .PivotFields("PlatzID/Gerät")
.Orientation = xlRowField
.Position = 1
End With
.AddDataField .PivotFields("Tagabfluss"), "Summe von Tagabfluss", xlSum
End With