Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel PivotCaches.create的SourceData超过65535行_Excel_Vba_Pivot Table - Fatal编程技术网

Excel PivotCaches.create的SourceData超过65535行

Excel PivotCaches.create的SourceData超过65535行,excel,vba,pivot-table,Excel,Vba,Pivot Table,有人能解释一下,为什么在使用数据透视缓存时,不能将超过65535行的范围与源数据一起使用。创建方法 我使用的是Excel 2013,也使用版本:=xlPivotTableVersion14(如果我没有弄错的话,它对应于XL2010) 我读到我可以使用名称范围来解决这个问题,但我只是想知道为什么当前代码不起作用?如果我只将rng设置为少于65535行,那么同样的代码也可以工作 Set ws = Worksheets("mydata") Set rng = ws.Range("A1:C66000")

有人能解释一下,为什么在使用数据透视缓存时,不能将超过65535行的范围与源数据一起使用。创建方法

我使用的是Excel 2013,也使用版本:=xlPivotTableVersion14(如果我没有弄错的话,它对应于XL2010)

我读到我可以使用名称范围来解决这个问题,但我只是想知道为什么当前代码不起作用?如果我只将rng设置为少于65535行,那么同样的代码也可以工作

Set ws = Worksheets("mydata")
Set rng = ws.Range("A1:C66000")

'Set rng = ws.Range("A1:C65000")  THIS WORKS

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataRange, Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:=Worksheets("pvot").Range("A1"), TableName:="mypv", DefaultVersion:=xlPivotTableVersion14

错误:错误13,类型不匹配

我无法解释。我怀疑这与遗留代码和问题有关。但我可以提供一个解决办法

一切似乎都按预期进行,而不是

SourceData:=Rng
你会用

SourceData:=Rng.Worksheet.Name & "!" & Rng.Address
这个表达式的计算结果实际上是字符串

"mydata!$A$1:$C$65000"
这就是Excel 2013宏记录器在记录插入时使用的内容→ 透视表命令