Hello 大家好!
今天永恒君给各位分享的是Excel VBA实例第六篇,如何一键汇总多个sheet数据到总表,这个要做统计、数据的时候非常的好用。
比方说如下图,一个记录了1-6月份的考勤工作簿,包含了每个月的考勤记录,现在需要统计半年来的考勤情况。
自然会想到,要将各个分表的数据汇总到同一张表里处理。那么今天的实例就是解决这个问题。
先上代码
Sub collect()
Dim sht As Worksheet, rng As Range, k&, trow&
Application.ScreenUpdating = False
trow = Val(InputBox("请输入标题的行数", "提醒"))
If trow < 0 Then MsgBox "标题行数不能为负数。", 64, "警告": Exit Sub
Cells.ClearContents
Cells.NumberFormat = "@"
For Each sht In Worksheets
'遍历表格
If sht.Name <> ActiveSheet.Name Then
'如果表格名称不等于当前表名则进行复制数据……
Set rng = sht.UsedRange
'定义rng为表格已用区域
k = k + 1
'累计K值
If k = 1 Then
'如果是首个表格,则K为1,则把标题行一起复制到汇总表
rng.Copy
[a1].PasteSpecial Paste:=xlPasteValues
Else
'否则,扣除标题行后再复制黏贴到总表,只黏贴数值
rng.Offset(trow).Copy
Cells(ActiveSheet.UsedRange.Rows.Count + 1, 1).PasteSpecial Paste:=xlPasteValues
End If
End If
Next
[a1].Activate
Application.ScreenUpdating = True
End Sub
效果演示一下:
这里提醒一下
1、运行代码的时候一定要先选择需要汇总的sheet,否则会出错的;
2、每个sheet的标题行数可以根据实际情况来填写,填0,则表示不需要标题行,但是第一页默认会把标题行加上。
永恒君直接把上面实例VBA的文件分享出来,需要的就直接使用吧。
后台回复“汇总”即可。
不少人对VBA代码有抵触心理,其实没有那么复杂,把他看成一个稍微复杂点的函数即可。
当然如果并不打算深入学习VBA,只是临时使用下,那只要会复制黏贴就好了!
至于怎么用VBA代码,可以参考之前的文章:
Excel vba 实例(1) - 批量制作工资表头
Excel vba 实例(2) - 批量将工作表拆分为单独文件
Excel vba 实例(3) - 多个工作簿批量合并
Excel vba 实例(4) - 根据已有名称,批量新建表格
Excel vba 实例(5) - 快速合并n多个相同值的单元格
Excel VBA功能很强大,但是要熟练的运用起来还是有一定的难度,好在永恒君帮大家搜集了几套关于VBA的视频教程,非常的实用。
需要的话,微信公号后台回复“VBA”获取吧~~
欢迎交流!