首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用VBA创建表或从具有相同数据的多个选项卡中创建数据透视表(不能PowerPivot)

使用VBA创建表或从具有相同数据的多个选项卡中创建数据透视表(不能PowerPivot)
EN

Stack Overflow用户
提问于 2021-02-26 00:50:42
回答 1查看 29关注 0票数 0

我有大量的数据,我正试图将其转换为几个列表,然后使用这些列表来创建几个仪表板。由于需要跨组织共享数据,因此数据需要驻留在工作簿中(无法创建外部访问数据库)。给定要计算的行数,原始数据分布在多个选项卡中,但是由于这些表并不相关(它们本质上是具有相同值的同一个表,只是日期不同),所以我无法使用PowerPivot。我还尝试使用Sumif函数和静态日期列表创建一个表,这适用于我需要的其中一个表,但对于其他表,我需要一种创建具有动态日期的透视表的方法。

是否有VBA选项可以使用跨多个选项卡的数据从本质上合并特定的数据元素,如透视表?

EN

Stack Overflow用户

发布于 2021-02-26 04:08:15

你可以尝试这种方法,但我不知道它在处理那么多数据时会有多好。

它使用ADO和sql将数据合并到单个记录集,并将该记录集用作数据透视缓存源。

代码语言:javascript
运行
复制
'added reference to ADO 2.7 library
Dim sql As String, strFile, strConn, pc As PivotCache, pt As PivotTable
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

strFile = ThisWorkbook.FullName
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile & _
         ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"

cn.Open strConn
'combine all source sheets
sql = "Select * from [Sheet4$] union all select * from [Sheet5$]"

rs.Open sql, cn

Set pc = ThisWorkbook.PivotCaches.Add(SourceType:=xlExternal)
Set pc.Recordset = rs 'use recordset as source data

Set pt = pc.CreatePivotTable(tabledestination:=ThisWorkbook.Sheets("Pivot").Range("B2"))
pt.PivotFields("Col1").Orientation = xlRowField
pt.PivotFields("Col2").Orientation = xlColumnField
pt.AddDataField pt.PivotFields("Col3"), "Sum of Col3", xlSum
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66372890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档