|
Sub 每月明细汇总()
' 问题来源:https://club.excelhome.net/threa ... tml?_dsign=065ac418
' 时间:2024-3-6
' 需求:将每月产生的明细表上的数据,在次月初汇总到按月的汇总表上
' 条件:每月产生的明细表数据格式是一样的;数据存放于同一目录中
' 汇总的同时,将“明细”表备份到汇总工作簿上。
yf = Month(Date) ' 取得月份值
If yf = 1 Then
bmc = "12月" ' 电脑系统时间为1月初,则汇总12月的
Else
bmc = yf - 1 & "月" ' 月初汇总上月的数据
End If
Dim wb As Workbook ' 定义wb为工作簿变量
Application.DisplayAlerts = False ' 此句的作用:删除表时不出现“是否删除的对话框”
myname = ThisWorkbook.Name ' 这个工作的名称
mypath = ThisWorkbook.Path ' 这个工作的路径
For ii = 1 To Worksheets.Count ' 按工作表数量循环
If Worksheets(ii).Name = bmc Then ' 通过循环判断,来完成指定表名是否存在的查找
Worksheets(ii).Delete ' 删除表
Exit For
End If
Next ii ' 这个循环是删除已有数据表
Sheets.Add.Name = bmc ' 增加表,并起名为 BMC 变量中的值
Sheets(bmc).Move after:=Sheets(Sheets.Count) ' 将刚新增的表移动到最右侧 Cells.Select Selection.NumberFormatLocal = "@"
Cells.Select
Selection.NumberFormatLocal = "@" ' 单元格设置成文本格式
'---先准备好空表,以备粘贴用
f = ThisWorkbook.Path & "\明细.xlsx" ' 为方便判断
If Dir(f) = "" Then MsgBox "文件不存在!", 64: Exit Sub ' 如果表不存在,则退出VBA
Set wb = Workbooks.Open(mypath & "\明细.xlsx") ' 打开“明细”表
wb.ActiveSheet.Select ' 选定活动工作表
Cells.Copy ' 复制整个表
Windows(myname).Activate ' 切换活动窗口到汇总表
ActiveSheet.Paste ' 粘贴,对“明细”表进行备份留存
Windows("明细.xlsx").Activate ' 又切换活动窗口到“明细”
ActiveWindow.Close ' 关闭刚打开的“明细”工作簿
Windows(myname).Activate ' 回到“汇总”工作簿的窗口
For y = 2 To 24 Step 2
If Sheets("汇总").Cells(2, y).Value = bmc Then
kk = y ' 确定当前要汇总数据的列位置
End If
Next y
gg = 2 ' 开始数据的汇总
Do While Not (IsEmpty(Sheets(bmc).Cells(gg, 11).Value))
hz = 4
Do While Not (IsEmpty(Sheets("汇总").Cells(hz, 1).Value))
If Sheets("汇总").Cells(hz, 1).Value = Sheets(bmc).Cells(gg, 11).Value Then
Sheets("汇总").Cells(hz, kk).Value = Sheets(bmc).Cells(gg, 12).Value
Sheets("汇总").Cells(hz, kk + 1).Value = Sheets(bmc).Cells(gg, 13).Value
End If
hz = hz + 1
Loop
gg = gg + 1
Loop ' 数据汇总结束
Application.DisplayAlerts = True
Sheets("汇总").Select
Range("A1").Select
End Sub
2007版本测试通过。 因为办公电脑有加密,所以,不发附件
觉得有益,请送鲜花 |
评分
-
1
查看全部评分
-
|