本帖最后由 mxg825 于 2011-10-13 16:06 编辑
Sub 插入合计行()
Dim K%, S%
Dim mydate As Date '分隔日期(每月25号)
K = 9: S = 9
mydate = CDate(Format(Cells(K, 2), "YYYY-MM-") & 25)
Application.ScreenUpdating = False '关闭刷新 提高速度
Do
If (CDate(Cells(K, 2)) <= mydate And CDate(Cells(K + 1, 2)) > mydate ) OR (Len(Cells(K + 1, 2)) = 0) Then '合计项
Rows(K + 1 & ":" & K + 2).Insert '插入2行
Cells(K + 1, 5) = Format(mydate, "M月") & "合计"
Range(Cells(K + 1, 7), Cells(K + 1, 10)) = "=sum(r" & S & "c:r[-1]c)"
Cells(K + 2, 5) = "本年合计"
Range(Cells(K + 2, 7), Cells(K + 2, 10)) = "=sumif(r9c5:r[-1]c5, ""*月合计"",r9c:r[-1]c)"
Range(Cells(K + 1, 2), Cells(K + 2, 13)).Interior.ColorIndex = 40 '填充底色
Cells(K + 1, 2).Resize(2, 12).Font.Bold = True '加粗字体 (Resize 扩大区域) 返回区域与上句一样
K = K + 2: S = K + 1
mydate = DateAdd("M", 1, mydate) '下一个月的25号
End If
K = K + 1
Loop Until Cells(S, 2) = ""
Range("B9").Resize(K - 9, 12).Borders.LineStyle = 1 '加网格线
Application.ScreenUpdating = True '开启刷新
MsgBox "完成"
End Sub
'代码加了一个条件 当到最后个单元格时, (Len(Cells(K + 1, 2)) = 0)
'Loop Until Cells(K, 2) = "" K 改为S