我有大量的数据,我正试图将其转换为几个列表,然后使用这些列表来创建几个仪表板。由于需要跨组织共享数据,因此数据需要驻留在工作簿中(无法创建外部访问数据库)。给定要计算的行数,原始数据分布在多个选项卡中,但是由于这些表并不相关(它们本质上是具有相同值的同一个表,只是日期不同),所以我无法使用PowerPivot。我还尝试使用Sumif函数和静态日期列表创建一个表,这适用于我需要的其中一个表,但对于其他表,我需要一种创建具有动态日期的透视表的方法。
是否有VBA选项可以使用跨多个选项卡的数据从本质上合并特定的数据元素,如透视表?
发布于 2021-02-26 04:08:15
你可以尝试这种方法,但我不知道它在处理那么多数据时会有多好。
它使用ADO和sql将数据合并到单个记录集,并将该记录集用作数据透视缓存源。
'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", xlSumhttps://stackoverflow.com/questions/66372890
复制相似问题