创建数据透视表在新 Excel 版本上不起作用



我的宏应该创建一个数据透视表并添加特定的过滤器。我为此使用了宏录制器,它适用于我的计算机,但不适用于较新版本的 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

最新更新