- Sub Macro1()
- On Error Resume Next
- Dim arr, brr, crr(1 To 60000, 1 To 3), d
- Set d = CreateObject("scripting.dictionary")
- arr = Range("a1").CurrentRegion
- brr = Sheets("货号位置").Range("a1").CurrentRegion
- For i = 2 To UBound(brr)
- If Not d.exists(brr(i, 1)) Then
- s = s + 1
- d(brr(i, 1)) = s
- crr(s, 1) = brr(i, 1)
- crr(s, 2) = brr(i, 2)
- crr(s, 3) = brr(i, 3)
- Else
- crr(d(brr(i, 1)), 2) = crr(d(brr(i, 1)), 2) + brr(i, 2)
- End If
- Next
- For i = 2 To UBound(arr)
- If Not d.exists(arr(i, 1)) Then
- s = s + 1
- d(arr(i, 1)) = s
- crr(s, 1) = arr(i, 1)
- crr(s, 2) = arr(i, 2)
- crr(s, 3) = arr(i, 3)
- Else
- crr(d(arr(i, 1)), 2) = crr(d(arr(i, 1)), 2) + arr(i, 2)
- End If
- Next
- Sheets("货号位置").Range("a2").Resize(s, 3) = crr
- Range("a1").CurrentRegion.Offset(1, 0).ClearContents
- End Sub
复制代码 |