我想使用一个字典数组来存储Excel的所有内容,以便以后轻松处理它并在内存中进行操作。 我会定义excel的第一行是键,其余行是内容。因为我有许多值的一个键,我需要将它们存储在不同的容器中(这将是数组)。
内容样本
Code Name Surname 1 a b 2 c d
所以,代码将是这样的:
For Each rcell In ws.UsedRange.Cells
If rcell.Row > 1 Then
ReDim Preserve aRows(rcell.Row - 2)
'Set aRows(rcell.Row - 2) = CreateObject("scripting.dictionary")
Set pInfo = New Scripting.Dictionary
pInfo.Add Key:=Cells(1, rcell.Column).Value, Item:=rcell.Value
'aRows(rcell.Row - 2).Add Key:=Cells(1, rcell.Column).Value, Item:=rcell.Value
Set aRows(rcell.Row - 2) = pInfo
End If
Next rcell
使用此代码我创建了字典数组。但是,当我想访问数据时,我收到错误,我猜不出正确的访问方式。
我知道至少它存储的是因为当我使用时:
debug.print(ubound(aRows))
在这种情况下我得到值(1)。
另外,我尝试使用
访问内容for each row in aRows
debug.print(row.key)
next row
然而,这是不被接受的。如何访问数据?
谢谢 此外,如果有人建议替代或更简单的东西会很棒。这是我能解决问题的最佳解决方案。
答案 0 :(得分:2)
可能是这个吗?
Dim d, k
For Fach d in aRows
For Each k in d.keys
Debug.Print k, d(k),
Next
Debug.Print vbCrLf
Next
答案 1 :(得分:2)
你可以使用
Dim myRow as Variant, key as variant
For Each myRow In aRows
With myRow
For Each key In .Keys
Debug.Print key, .Item(key)
Next
End With
Next