创build数据透视caching时,input不匹配错误

我正在尝试使用dynamic范围在报表上创build一个数据透视表,但得到的错误是:

运行时错误:13types不匹配

谷歌search错误,根据我的理解,代码包含的数据types不匹配正确,但我无法弄清楚错误在哪里:

使用Excel 2016。

Sub EEE() Dim PrevSheet As Worksheet Set PrevSheet = ActiveSheet Sheets.Add.Name = "Pivottable" PrevSheet.Select ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _ SourceData:=ActiveSheet.UsedRange, _ Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:="Pivottable!R3C1", _ TableName:="PivotTable1", _ DefaultVersion:=xlPivotTableVersion15 Sheets("Pivottable").Select Cells(3, 1).Select With ActiveSheet.PivotTables("PivotTable1").PivotFields("Faculty") .Orientation = xlRowField .Position = 1 End With With ActiveSheet.PivotTables("PivotTable1").PivotFields("NPS") .Orientation = xlColumnField .Position = 1 End With End Sub 

修改代码 – 工作

 Sub EEE() Dim rng As Range Dim pc As PivotCache Dim pt As PivotTable Dim ws As Worksheet Set rng = ActiveSheet.Range("A1").CurrentRegion Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabaseSourceData:=rng.Address) Set ws = ActiveWorkbook.Worksheets.Add ws.Name = "NewSheet" Set pt = pc.CreatePivotTable(TableDestination:=Range("A3"),TableName:="pvttbl") With pt .PivotFields("Faculty").Orientation = xlRowField ActiveSheet.PivotTables("pvttbl").AddDataField ActiveSheet.PivotTable "pvttbl").PivotFields("NPS"), "Count of NPS", xlCount .PivotFields("NPS").Orientation = xlColumnField End With End Sub 

你不说什么线路给错误。 但是有几个可能的罪魁祸首。 行SourceData:=ActiveSheet.UsedRange说:“嘿,把数据透视表放在活页上find的所有东西 。 不是一个好主意。 使用数据的确切范围。 要么select一个数据块的地方,并使用CurrentRegion例如

 SourceData:= Activesheet.Range("A1").CurrentRegion 

…甚至更好,将SourceData转换成代码中前面的Excel表又名ListObject,并引用该ListObject:

 SourceData:= "Table1" 

如果您尝试多次运行代码,并且没有删除上次创build的名为“数据透视表”的工作表,则代码也会失败。

以下是我将如何编码:

 Option Explicit Sub EEE() Dim rng As Range Dim pc As PivotCache Dim pt As PivotTable Dim pf As PivotField Dim ws As Worksheet Set rng = Range("A1").CurrentRegion '<- Change to the address of the top left cell in your data. Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rng.Address) Set ws = ActiveWorkbook.Worksheets.Add Set pt = pc.CreatePivotTable(TableDestination:=Range("A1")) With pt .PivotFields("Faculty").Orientation = xlRowField .PivotFields("NPS").Orientation = xlColumnField End With End Sub