我有一个ultimatley数组,我想将其用作构建数据透视表的数据源,我了解到数据透视表不会接受数组,因此我应该使用记录集作为数据透视表会接受此数组。
我正在努力使用数组构建记录集。
如何将多维数组传递到记录集?
或
如何在数据透视表中使用数组数据?
感谢您的帮助。
我有一个ultimatley数组,我想将其用作构建数据透视表的数据源,我了解到数据透视表不会接受数组,因此我应该使用记录集作为数据透视表会接受此数组。
我正在努力使用数组构建记录集。
如何将多维数组传递到记录集?
或
如何在数据透视表中使用数组数据?
感谢您的帮助。
您要查找的术语是“断开记录集”。一旦您知道Google的用语,便有很多示例。 例如:https://developer.rhino3d.com/guides/rhinoscript/disconnected-recordset-sorting/
这是一个基本示例:
Sub PopCache()
Dim pc As PivotCache,rs As ADODB.Recordset,pt As PivotTable
Dim arr,x As Long
Set pc = ThisWorkbook.PivotCaches.Create(xlExternal)
'get an array for testing
arr = ActiveSheet.Range("J4").CurrentRegion.Value
'populate the pivotcache from a recordset
Set pc.Recordset = ArrayToRecordSet(arr,_
Array("Name","Color","Length"))
Set pt = pc.CreatePivotTable(ActiveSheet.Range("B2"))
End Sub
'Take an array of data and an array of field names and
' return a populated disconnected recordset
Function ArrayToRecordSet(arr,fieldNames) As Object
Dim rs As Object,r As Long,c As Long,h,f As Long
Set rs = CreateObject("ADODB.Recordset")
For Each h In fieldNames
rs.Fields.Append h,adVariant
Next h
rs.Open
For r = LBound(arr,1) To UBound(arr,1)
rs.AddNew
f = 0
For c = LBound(arr,2) To UBound(arr,2)
rs.Fields(f).Value = arr(r,c)
f = f + 1
Next c
Next r
Set ArrayToRecordSet = rs
End Function