Excel中具有数据透视功能的奇怪行为



首先我希望你能理解我的英语:(

我提前感谢你阅读我的问题。

我的一个工作簿(Excel 2013(出现问题。

我不能告诉你消息来源,但我会尽力解释的。

首先,我在ListObject上构建了一个TCD,一个记录集填充了ListObject,这是我的数据透视表的来源。但有时listobject处理的行太多。。。

因此,为了避免这种情况,我转而将我的记录集复制到一个数据透视缓存中,该缓存现在用于创建数据透视表。这是为了摆脱excel的1M行限制。这是有效的。。。有时

有时Excel不允许我在数据透视表中添加某个数据透视字段,我们称之为"数据透视";SEQ〃;,它说有太多独特的元素。

但是,如果我在数据透视表的总数上加上两个clic,它会详细说明在新表中创建数据透视缓存的260K行(这与我的sql查询结果相同(。如果我在这个范围上制作一个新的数据透视表,那么就可以了,我可以添加字段SEQ。

真奇怪!我发现了数据透视表的限制:数据透视表中唯一项的最大数量为1048576。但我没有那么多的线,只有67K不同的SEQ!

为什么Excel在引用Recorset中的过多数据透视缓存时会认为我有太多的唯一项,而在数据透视缓存基于工作表中的某个区域时却不会这样认为?

我希望我已经足够清楚了。

编辑:这是一些要求的代码

在可访问模块中声明:

Public cnn As New ADODB.Connection

Public objcmd As New ADODB.Command

在获取数据并创建PT:的函数中

Req = "SELECT * FROM TABLE"
objcmd.CommandText = Req
Set RS = objcmd.Execute
Set objPivotCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
Set objPivotCache.Recordset = RS
With objPivotCache
.CreatePivotTable TableDestination:=Range("A8"), TableName:="TCDDirect1"
End With
With Sheets("Données").PivotTables("TCDdirect1").PivotFields("ETATR")
.Orientation = xlRowField
.Position = 1
End With
With Sheets("Données").PivotTables("TCDdirect1").PivotFields("FAMR")
.Orientation = xlRowField
.Position = 2
End With
With Sheets("Données").PivotTables("TCDdirect1").PivotFields("SEQ")  <---- Program stop here in some cases
.Orientation = xlRowField
.Position = 3
End With
With Sheets("Données").PivotTables("TCDdirect1").PivotFields("LIBELLé")
.Orientation = xlRowField
.Position = 4
End With

使用Set objPivotCache=ActiveWorkbook.PvotCaches.Create(xlExternal(而不是Set objPivotCache=ActiveWorkbook.pvotCaches.Add(SourceType:=xlExternal。。。我不知道为什么。。。希望它能帮助到别人!

最新更新