|
博董的博 发表于 2013-6-3 11:27
好高端,代码您能帮解释一下吗,大概每行都表达什么意思,以前没弄过 - Sub 求和()
- Dim n%, i%, d As Object '申明变量类型
- Dim arr() '申明数组
- ReDim Preserve arr(1 To 500, 1 To 2) '重新申明数组,并能保留以前数据
- For Each sht In Sheets '遍历工作表
- If sht.Name <> "求和" Then '求和的工作表除外
- For Each Rng In sht.Range("a2:a" & sht.[a65536].End(3).Row) '遍历每个工作表A列单元格(标题除外)
- n = n + 1 '计数、累加
- arr(n, 1) = Rng.Value '把每个工作表A列数据写入数组
- arr(n, 2) = sht.Cells(Rng.Row, 2) '把每个工作表B列数据写入数组
- Next
- End If
- Next
- Set d = CreateObject("scripting.dictionary") '调用字典
- For i = 1 To UBound(arr) '在数组区域内循环
- d(arr(i, 1)) = d(arr(i, 1)) + arr(i, 2) '对相同的型号累加
- Next
- With Sheets("求和")
- .Range("a2:b" & .[a65536].End(3).Row + 10).ClearContents '写入数据前先清空区域
- .[a2].Resize(d.Count) = Application.Transpose(d.keys) '将每个型号(不重复)写入A列。
- .[b2].Resize(d.Count) = Application.Transpose(d.items) '将对应型号的和,写入B列。
- End With
- MsgBox "分类求和完成,请查看!", 64 '
- End Sub
复制代码 |
|