|
发表于 2012-10-27 22:45
|
显示全部楼层
本楼为最佳答案
- Sub 兰版的下棋法()
- Dim arr, arr1(1 To 1000, 1 To 8), arr2, sr
- Dim x, y, k, d, hk, rn As Range
- arr2 = Array("编码", "产地", "货品", "规格", "方式", "单价", "听数", "金额")
- arr = Range("c5:t17")
- Set d = CreateObject("scripting.dictionary")
- For x = 1 To UBound(arr)
- sr = arr(x, 2) & arr(x, 7)
- If d.exists(sr) Then
- hk = d(sr)
- arr1(hk, 7) = arr1(hk, 7) + arr(x, 16)
- arr1(hk, 8) = arr1(hk, 8) + arr(x, 9)
- Else
- k = k + 1
- d(sr) = k
- arr1(k, 1) = arr(x, 18)
- arr1(k, 2) = arr(x, 1)
- arr1(k, 3) = arr(x, 2)
- arr1(k, 4) = arr(x, 3)
- arr1(k, 5) = arr(x, 4)
- arr1(k, 6) = arr(x, 7)
- arr1(k, 7) = arr(x, 16)
- arr1(k, 8) = arr(x, 9)
- End If
- Next x
- Sheets.Add before:=Sheets(1)
- With ActiveSheet
- .Name = "数据汇总表" & Sheets.Count
- .Cells(1, 1).Resize(1, 8) = arr2
- .Cells(2, "a").Resize(UBound(arr1), 8) = arr1
- For Each rn In .Range("c2:c" & UBound(arr1) + 1)
- If Application.WorksheetFunction.CountIf(.Range("c2:c" & UBound(arr1) + 1), rn) = 1 Then rn.EntireRow.Delete
- Next
- End With
- End Sub
复制代码 仅供参考,向兰版致敬 |
|