|
第一次这样写注释,也是按照自己的理解写的,如有不妥之处,望指出:
Set d = CreateObject("scripting.dictionary") ‘建立字典
arr = Sheet1.[a1].CurrentRegion '给arr数组赋值为sheet1表的A1单元格开始的连续区域
For i = 3 To UBound(arr) '从arr数组的第3行开始循环至arr数组的最后一行
d(arr(i, 1)) = arr(i, 2) & "/" & arr(i, 4) & "/" & arr(i, 5) & "/" & arr(i, 6) '给字典赋值,关键字为arr数组第一列的值,项目为arr数组的第2、4、5、6列的值,中间用"/"分隔,为后期split做准备
Next
brr = Range("a1:e" & Cells(Rows.Count, 2).End(3).Row) '给brr数组赋值为宏按钮所在表的A1单元格至E列,行数是B列最后一行,也可以写成brr = Range("a1:e" & [B655360].End(3).Row)
For i = 2 To UBound(brr) ’从brr数组第2行循环至brr最后一行
If d.exists(brr(i, 2)) Then '如果brr数组的第2列的值为关键字存在
s = Split(d(brr(i, 2)), "/") '将该关键字对应的项目分割为一维数组,分隔符是前面提到的"/"
Cells(i, 1) = s(2) '给第1列单元格赋值,值为项目值的分割后的第3个,即上面arr数组的第5列的值
Cells(i, 3) = s(0) '给第3列单元格赋值,值为项目值的分割后的第1个,即上面arr数组的第2列的值
Cells(i, 4) = s(1) '给第4列单元格赋值,值为项目值的分割后的第2个,即上面arr数组的第4列的值
Cells(i, 5) = s(3) '给第5列单元格赋值,值为项目值的分割后的第4个,即上面arr数组的第6列的值
End If
Next
Set d = Nothing '注销字典
End Sub
上面给单元格赋值,这样写因为是直接操作单元格,因此数据量大时会比较慢,可以先赋值给数组,最后再一次性输出。 |
评分
-
1
查看全部评分
-
|