|
发表于 2011-12-31 09:44
|
显示全部楼层
本楼为最佳答案
- Sub jUsttESt()
- '引用VBE下工具-引用-ms scripting runtime
- Dim D As New Dictionary, Arr, i&, ArrT(), S$, K1$, K&
- With Worksheets("数据录入")
- Arr = .Range("b2:r" & .Cells(.Rows.Count, 2).End(3).Row).Value
- End With
- For i = 1 To UBound(Arr)
- S = Format(Arr(i, 1), "yyyy年m月份")
- K1 = S & Arr(i, 3)
- If D.Exists(K1) Then
- ArrT(13, D(K1)) = ArrT(13, D(K1)) + 1
- ArrT(4, D(K1)) = ArrT(4, D(K1)) + Arr(i, 6)
- ArrT(5, D(K1)) = ArrT(5, D(K1)) + Arr(i, 7)
- ArrT(6, D(K1)) = ArrT(6, D(K1)) + Arr(i, 8)
- ArrT(7, D(K1)) = ArrT(7, D(K1)) + Arr(i, 9)
- If Len(Arr(i, 15)) Then
- ArrT(12, D(K1)) = ArrT(12, D(K1)) + Arr(i, 17)
- End If
- Else
- K = K + 1: ReDim Preserve ArrT(1 To 13, 1 To K)
- D.Add K1, K: ArrT(2, K) = S: ArrT(1, K) = K
- ArrT(3, K) = Arr(i, 3): ArrT(13, D(K1)) = 1
- ArrT(4, D(K1)) = Arr(i, 6): ArrT(5, D(K1)) = Arr(i, 7)
- ArrT(6, D(K1)) = Arr(i, 8): ArrT(7, D(K1)) = Arr(i, 9)
- If Len(Arr(i, 15)) Then ArrT(12, K) = Arr(i, 17)
- End If
- S = Format(Arr(i, 10), "yyyy年m月份")
- K1 = S & Arr(i, 3)
- If D.Exists(K1) Then
- ArrT(8, D(K1)) = ArrT(8, D(K1)) + Arr(i, 11)
- ArrT(9, D(K1)) = ArrT(9, D(K1)) + Arr(i, 12)
- ArrT(10, D(K1)) = ArrT(10, D(K1)) + Arr(i, 13)
- ArrT(11, D(K1)) = ArrT(11, D(K1)) + Arr(i, 14)
- Else
- K = K + 1: ReDim Preserve ArrT(1 To 13, 1 To K)
- D.Add K1, K: ArrT(2, K) = S: ArrT(3, K) = Arr(i, 3): ArrT(1, K) = K
- ArrT(8, D(K1)) = Arr(i, 11): ArrT(9, D(K1)) = Arr(i, 12)
- ArrT(10, D(K1)) = Arr(i, 13): ArrT(11, D(K1)) = Arr(i, 14)
- End If
- Next
- With Worksheets("统计表")
- .Range("A3:m" & .Rows.Count).ClearContents
- .Range("A3").Resize(K, 13) = Application.Transpose(ArrT)
- .Range("b3").Resize(K, 12).Sort key1:=.Range("c3"), Order1:=xlAscending, _
- key2:=.Range("b3"), Order1:=xlAscending, Header:=xlNo
- End With
- Set D = Nothing
- End Sub
复制代码
统计不同月份数据.rar
(23.87 KB, 下载次数: 39)
|
-
|