在VBA中创建pivotTable是否对源行数有限制?

时间:2014-07-11 15:35:21

标签: excel-vba pivot-table vba excel

我设法创建了一个宏,它可以从一些示例源数据(大约20行)创建pivotTables和pivotCharts,这一切都运行良好。

然而,当我使用一个月的样本数据时 - 大约215,000行我突然得到错误'类型不匹配'在创建pivotTable的行中。

t1wkb.PivotCaches.Create(SourceType:=xlDatabase, 
SourceData:=currentsht.Range("A1").CurrentRegion, _
Version:=xlPivotTableVersion14).CreatePivotTable TableDestination:="[" & t1wkb.Name & "]"
& wsNew.Name & "!R1C1", TableName:="PivotTableName", _
DefaultVersion:=xlPivotTableVersion14

奇怪的是我可以从大型数据集中手动创建一个pivotTable,记录该过程并在excel中播放该内容会给我带来错误。

有人知道这是我的代码是否有问题,或者我是否已经达到某种类型的excel pivotTable的VBA构造函数的硬限制?

感谢你对这个问题有所了解, 大卫

1 个答案:

答案 0 :(得分:2)

我也遇到过这个问题,在创建数据库缓存时提供SourceData Value时,我的解决方法是使用string而不是range。我能够以这种方式绕70K行进行数据透视表。

我的VBA代码如下。

Dim pvt_source_worksheet As Worksheet
Dim pvt_destination_worksheet As Worksheet

Dim last_cell_range As Range
Dim source_range_string As String

Set pvt_source_worksheet = ThisWorkbook.Worksheets(yourworksheet)
Set pvt_destination_worksheet = ThisWorkbook.Worksheets(destination worksheet)

Set last_cell_range = pvt_source_worksheet.Range("A1").SpecialCells(xlCellTypeLastCell)
source_range_string = pvt_source_worksheet.Name & "!R1C1:R" & last_cell_range.Row & "C" & last_cell_range.Column

'Create pivot cache

Set pvt_cache = ThisWorkbook.PivotCaches.Create( _
                SourceType:=xlDatabase, _
                SourceData:=source_range_string)

'Create pivot table

Set pvt_tbl = pvt_cache.CreatePivotTable( _
                TableDestination:=pvt_destination_worksheet.Range("A1"))