|
发表于 2015-1-28 15:37
|
显示全部楼层
本楼为最佳答案
换个思路- Sub 提取数据()
- Dim arr, brr(1 To 100, 1 To 7)
- Set d = CreateObject("scripting.dictionary")
- Set d1 = CreateObject("scripting.dictionary")
- arr = Range("a1").CurrentRegion
- For i = 1 To UBound(arr)
- zf = arr(i, 3) & "," & arr(i, 6) '物料和单价相同
- If Not d.exists(zf) Then
- x = x + 1
- d(zf) = x
- For j = 1 To UBound(arr, 2)
- brr(x, j) = arr(i, j)
- Next j
- d1(brr(x, 2)) = d1(brr(x, 2)) & "," & x
- Else
- p = d(zf)
- brr(p, 5) = brr(p, 5) + arr(i, 5)
- brr(p, 7) = brr(p, 7) + arr(i, 7)
- End If
- Next
-
- crr = brr: x = Join(d1.items)
- xrr = Split(x, ",")
- For j = 2 To UBound(xrr) '去掉第0个空位,第1个表头
- t = Val(xrr(j)): n = n + 1
- crr(n + 1, 1) = n
- For k = 2 To UBound(brr, 2)
- crr(n + 1, k) = brr(t, k)
- Next
- Next
- Range("i1").CurrentRegion.ClearContents
- Range("i1").Resize(n + 1, 7) = crr
- End Sub
复制代码 |
|