代码不适用于行数> 65536的枢轴数据集

我的目的是创build一个枢轴表,并进一步创build一个转储数据(A1:AE170000)。 我在下面附上了我的代码,如果我将数据减less到60-65k行左右,则工作得很好。

它引发运行时错误13:types不匹配在我设置我的数据透视表caching(PTCache)。

Private Sub OptionButton3_Click() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual ThisWorkbook.Sheets("Data").Activate Dim PTCache As PivotCache Dim PT As PivotTable 'Setting range as my entire data set Dim PTRange As Range Set PTRange = Range("A1", Range("A1").End(xlToRight).End(xlDown)) 'Adding a new worksheet for Pivot Table and Chart Dim ws As Worksheet Set ws = Sheets.Add ws.Name = "All" PTRange.Select ThisWorkbook.Sheets("All").Activate 'Runtime error 13:Type Mismatch at this line while setting PTCache Set PTCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, PTRange) Set PT = ActiveSheet.PivotTables.Add(PTCache, Range("A1"), "All") With PT .PivotFields("Name").Orientation = xlPageField .PivotFields("Rate").Orientation = xlDataField .PivotFields("Date").Orientation = xlRowField End With PT.PivotSelect ("") Charts.Add ActiveChart.Location where:=xlLocationAsObject, Name:=PT.Parent.Name ActiveChart.ChartType = xlLine ActiveChart.Parent.Top = Range("I7").Top ActiveChart.Parent.Left = Range("I7").Left Range("A2").Select Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub 

从PivotCaches.Create方法(Excel) (我的重点):

<blah> <blah> …作为范围传递时,build议使用string来指定工作簿,工作表和单元格范围,或者设置一个命名范围并将该名称作为string传递。 传递一个Range对象可能会导致意想不到的“types不匹配”错误

只需设置一个stringvar到从A1放射出来的数据工作表的Range.CurrentRegion属性的外部地址并使用它。

 Option Explicit Private Sub OptionButton3_Click() 'Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim PT As PivotTable, PTCache As PivotCache Dim PTRange As Range, ws As Worksheet, strRNG As String strRNG = ThisWorkbook.Worksheets("Data").Cells(1, 1).CurrentRegion.Address(external:=True) With Worksheets.Add(after:=Sheets(Sheets.Count)) .Name = "All" Set PTCache = .Parent.PivotCaches.Create(xlDatabase, strRNG) Set PT = .PivotTables.Add(PTCache, .Range("A1"), "All") With PT .PivotFields("Name").Orientation = xlPageField .PivotFields("Rate").Orientation = xlDataField .PivotFields("Date").Orientation = xlRowField End With PT.PivotSelect ("") End With 'all the chart stuff here Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub