Excel vba 实例(6) - 一键汇总多个sheet数据到总表

Hello 大家好!

今天永恒君给各位分享的是Excel VBA实例第六篇,如何一键汇总多个sheet数据到总表,这个要做统计、数据的时候非常的好用。

比方说如下图,一个记录了1-6月份的考勤工作簿,包含了每个月的考勤记录,现在需要统计半年来的考勤情况。

Excel vba 实例(6) - 一键汇总多个sheet数据到总表_第1张图片

自然会想到,要将各个分表的数据汇总到同一张表里处理。那么今天的实例就是解决这个问题。

先上代码


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


效果演示一下:

Excel vba 实例(6) - 一键汇总多个sheet数据到总表_第2张图片

这里提醒一下

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”获取吧~~


Excel vba 实例(6) - 一键汇总多个sheet数据到总表_第3张图片
Excel vba 实例(6) - 一键汇总多个sheet数据到总表_第4张图片
Excel vba 实例(6) - 一键汇总多个sheet数据到总表_第5张图片

欢迎交流!

你可能感兴趣的:(Excel vba 实例(6) - 一键汇总多个sheet数据到总表)