|
本帖最后由 lasharks 于 2014-4-4 17:51 编辑
代码放在模块1内,解法比较丑陋。- Sub lasharks1()
- Application.ScreenUpdating = False
- Dim i As Integer, arr, brr, y As Integer, m As Integer, j As Integer, k As Integer
- Dim temp_m1 As Double, temp_m2 As Double, temp_y1 As Double, temp_y2 As Double
- With Sheet9
- arr = .Range("a1:f" & .Range("a65536").End(xlUp).Row)
- ReDim brr(1 To 10000, 1 To UBound(arr, 2))
- For k = 1 To UBound(arr, 2)
- brr(1, k) = arr(1, k)
- Next
- For i = 2 To UBound(arr)
- If y = 0 Then y = Year(arr(i, 1)): m = Month(arr(i, 1)): j = i
- If Year(arr(i, 1)) = y Then
- If Month(arr(i, 1)) = m Then
- temp_m1 = temp_m1 + arr(i, 5)
- temp_m2 = temp_m2 + arr(i, 6)
- For k = 1 To UBound(arr, 2)
- brr(j, k) = arr(i, k)
- Next
- j = j + 1
- Else
- temp_y1 = temp_y1 + temp_m1
- temp_y2 = temp_y2 + temp_m2
- brr(j, 1) = arr(i - 1, 1): brr(j, 4) = "本期合计": brr(j, 5) = temp_m1: brr(j, 6) = temp_m2
- j = j + 1
- temp_m1 = arr(i, 5)
- temp_m2 = arr(i, 6)
- brr(j, 1) = arr(i - 1, 1): brr(j, 4) = "本年合计": brr(j, 5) = temp_y1: brr(j, 6) = temp_y2
- j = j + 1
- For k = 1 To UBound(arr, 2)
- brr(j, k) = arr(i, k)
- Next
- j = j + 1
- m = Month(arr(i, 1))
- End If
- Else
- y = Year(arr(i, 1)): m = Month(arr(i, 1))
- brr(j, 1) = arr(i - 1, 1): brr(j, 4) = "本期合计": brr(j, 5) = temp_m1: brr(j, 6) = temp_m2
- j = j + 1
- brr(j, 1) = arr(i - 1, 1): brr(j, 4) = "本年合计": brr(j, 5) = temp_y1 + temp_m1: brr(j, 6) = temp_y2 + temp_m2
- j = j + 1
- For k = 1 To UBound(arr, 2)
- brr(j, k) = arr(i, k)
- Next
- j = j + 1
- temp_m1 = arr(i, 5)
- temp_m2 = arr(i, 6)
- temp_y1 = 0
- temp_y2 = 0
- End If
- Next
- brr(j, 1) = arr(i - 1, 1): brr(j, 4) = "本期合计": brr(j, 5) = temp_m1: brr(j, 6) = temp_m2
- j = j + 1
- brr(j, 1) = arr(i - 1, 1): brr(j, 4) = "本年合计": brr(j, 5) = temp_y1 + temp_m1: brr(j, 6) = temp_y2 + temp_m2
-
- .Columns("Q:V").Clear
- .Range("A1:F1").Select
- Selection.Copy
- .Range("Q1:V1").Select
- Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone
- Application.CutCopyMode = False
- .Range("A2:F2").Select
- Selection.Copy
- .Range("q2").Resize(j - 1, UBound(arr, 2)).Select
- Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone
- Application.CutCopyMode = False
- .Range("q1").Resize(j, UBound(arr, 2)) = brr
- End With
- Application.ScreenUpdating = True
- End Sub
复制代码 |
评分
-
查看全部评分
|