|
发表于 2012-9-8 20:37
|
显示全部楼层
本楼为最佳答案
- Sub SalesSum()
- Dim dSales, dIncome1, dIncome2, i As Integer, j As Integer, k, arr, m As Integer, Temp
- Set dSales = CreateObject("Scripting.Dictionary")
- Set dIncome1 = CreateObject("Scripting.Dictionary")
- Set dIncome2 = CreateObject("Scripting.Dictionary")
- arr = Sheets("销售明细").Range("A3:K" & Sheets("销售明细").Cells(65536, 1).End(xlUp).Row)
- For m = 1 To UBound(arr, 1)
- Temp = dSales(arr(m, 2))
- Temp = dIncome1(arr(m, 2))
- Temp = dIncome2(arr(m, 2))
- Next m
- For j = 1 To 7
- For i = 1 To UBound(arr, 1)
- If CStr(arr(i, 1)) = CStr(2012 & Cells(2, j * 3 - 1)) Then
- dSales(arr(i, 2)) = dSales(arr(i, 2)) + arr(i, 4)
- dIncome1(arr(i, 2)) = dIncome1(arr(i, 2)) + arr(i, 7) + arr(i, 8)
- dIncome2(arr(i, 2)) = dIncome2(arr(i, 2)) + arr(i, 10) + arr(i, 11)
- End If
- Next i
- Cells(4, j * 3 - 1).Resize(dSales.Count, 1) = Application.Transpose(dSales.Items)
- Cells(4, j * 3).Resize(dSales.Count, 1) = Application.Transpose(dIncome1.Items)
- Cells(4, j * 3 + 1).Resize(dSales.Count, 1) = Application.Transpose(dIncome2.Items)
- For Each k In dSales.keys
- dSales(k) = 0
- dIncome1(k) = 0
- dIncome2(k) = 0
- Next
- Next j
- Cells(4, 1).Resize(dSales.Count, 1) = Application.Transpose(dSales.keys)
- Set dSales = Nothing
- Set dIncome1 = Nothing
- Set dIncome2 = Nothing
- End Sub
复制代码
公式变代码.rar
(16.06 KB, 下载次数: 84)
|
|