- Sub test2()
- Dim A
- Set d1 = CreateObject("scripting.dictionary")
- Set dd = CreateObject("scripting.dictionary")
- A = Sheets(1).Range("a1").CurrentRegion
- ReDim B(1 To UBound(A), 1 To 4)
- For i = 2 To UBound(A) '相同的产生单位归类
- x1 = A(i, 1) '产生单位为key
- sz = A(i, 4): dw = A(i, 5) '数值、单位
- If Not d1.exists(x1) Then
- n = n + 1
- d1(x1) = n
- B(n, 1) = x1
- B(n, 3) = A(i, 6)
- B(n, 4) = A(i, 7)
- End If
- p = d1(x1)
- B(p, 2) = B(p, 2) & "," & sz & "-" & dw
- If InStr(B(p, 3), A(i, 6)) = 0 Then B(p, 3) = B(p, 3) & "、" & A(i, 6)
- If InStr(B(p, 4), A(i, 7)) = 0 Then B(p, 4) = B(p, 4) & "、" & A(i, 7)
- Next
-
- For i = 1 To n '计算数值+单位
- xrr = Split(B(i, 2), ",")
- For k = 1 To UBound(xrr)
- sz = Val(xrr(k)): dw = Split(xrr(k), "-")(1) '数值、单位
- dd(dw) = CStr(Val(dd(dw)) + sz) & dw
- Next
- B(i, 2) = Join(dd.items, "+")
- dd.RemoveAll
- Next
-
- With Sheets(2) '输出
- .Cells.Clear
- .[a1].Resize(1, 4) = Split("危废产生单位,数量,接收单位,地区", ",")
- .[a2].Resize(n, 4) = B
- .Activate
- End With
- End Sub
复制代码 |