- Public Sub ert()
- Dim d As Object, i%, a, b(), j%
- Dim xrow%, n%, arr, ss$
- Sheet1.Activate
- Set d = CreateObject("scripting.dictionary")
- xrow = Cells(Rows.Count, "a").End(xlUp).Row
- arr = Range("a4:I" & xrow)
- ReDim b(1 To xrow, 1 To 8)
- For i = 1 To UBound(arr)
- ss = arr(i, 1) & arr(i, 2) & arr(i, 4) & arr(i, 5) & arr(i, 6) & arr(i, 8)
- If Not d.exists(ss) Then
- n = n + 1
- d(ss) = n
- b(n, 1) = arr(i, 2): b(n, 2) = arr(i, 5): b(n, 3) = arr(i, 6): _
- b(n, 4) = arr(i, 4): b(n, 5) = arr(i, 1): b(n, 6) = arr(i, 8): b(n, 7) = arr(i, 7)
- Else
- b(d(ss), 7) = b(d(ss), 7) & "+" & arr(i, 7)
- End If
- Next
- Sheet3.Activate
- [b4:i1048576].Clear
- For j = 1 To d.Count
- a = Split(b(j, 7), "+")
- For i = 0 To UBound(a)
- b(j, 8) = b(j, 8) + a(i) * b(j, 5) / 100
- Next
- Next
- [b4].Resize(d.Count, 8) = b
- End Sub
复制代码
这是我对代码做了一点修改,希望能帮到你。 |