|
网上的一个字典和类模块结合读取数据的例子,想把例子中的a1 b1,c1 ,a2 b2 c2去掉,用 a b c 代替,循环读取源数据,但是做了之后只能读取每个主键的第一行数据,求高手帮忙改一下程序,谢谢了
按你的方法
Public Sub 字典一对多()
Dim dic As Object, i&, j&
ar = Range("a2:e12") ' & Cells(Rows.Count, 3).End(4).Row)
Set dic = CreateObject("Scripting.Dictionary")
Set itemw = New 类1
'MsgBox ar(2, 1)
For i = 1 To UBound(ar)
If ar(i, 1) <> "" Then
itemw.k = ar(i, 1)
With itemw
For d = 1 To 3
.a = ar(d, 3) ': .a1 = ar(i, 4): .a2 = ar(i, 5)
.b = ar(d, 4) ': .b1 = ar(i + 1, 4): .b2 = ar(i + 1, 5)
.c = ar(d, 5) ': .c1 = ar(i + 2, 4): .c2 = ar(i + 2, 5)
dic.Add itemw.k, itemw
br = dic.items
Sheet1.Cells(i + 12, 1) = br(0).k
Sheet1.Cells(d - 1 + i + 12, 3) = br(0).a
Sheet1.Cells(d - 1 + i + 12, 4) = br(0).b
Sheet1.Cells(d - 1 + i + 12, 5) = br(0).c
dic.RemoveAll
Next
End With
End If
Next
End Sub
你试试,这只能是一种方法,如果单纯读取数据处理,用数组不更好吗,速度也更快
|
|