关灯

Excel VBA 一键汇总多个sheet数据到总表

热度 30010已有 885 次阅读2019-9-24 15:16 |个人分类:EXCEL

今天给各位分享的是Excel VBA实例,如何一键汇总多个sheet数据到总表,这个要做统计、数据的时候非常的好用。
代码如下
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,则表示不需要标题行,但是第一页默认会把标题行加上。

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

QQ| 百度统计|账号封禁|李海博客 ( 陇ICP备15000550号-2 )|

GMT+8, 2021-9-23 20:54 , Processed in 0.061775 second(s), 16 queries .

返回顶部