分享

【Excel VBA篇】VBA常用小代码(五)一键汇总分表数据

 L罗乐 2016-08-06
【Excel VBA篇】VBA常用小代码(五)一键汇总分表数据
原创EXCELers08.04 22:33阅读14931
一键汇总分表数据到总表

大家好,我是星光,今天给大家分享是VBA常用小代码系列的第五篇——一键汇总分表数据。

举个栗子,如下图,一个工作簿,有多个分表,现在需要将他们快速汇总到一个工作表中。

imgLoading


有些朋友可能会想到用透视表、合并计算等。但这里需要说明的是,这里的多表汇总只是汇总明细,不需要对明细进行统计求和等运算,此外,标题行,也可能是双行标题,甚至含合并单元格的情况……嘻嘻~~

VBA代码参考如下:

iiiiiiiiii

Sub collect()
    '新浪微博@EXCELers,一键多表数据汇总
    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
    '清空当前表数据
    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
    '激活A1单元格
    Application.ScreenUpdating = True
    '恢复屏幕刷新
End Sub

iiiiiiiiii

操作过程及使用说明见演示动画:

imgLoading
iiiiiiiiii

小提示:

这个代码是将分表的数据快速合并到当前工作表,所以在使用时,务必先选择汇总表。

如果不会使用VBA代码,可以参考这个帖子:黑技术~秒破工作表加密!里面有使用VBA代码的图文教程哈~。

最后照例贴送示例文件百度网盘:百度网盘 (网盘里还有很多惊喜~~)

此前及后续更多VBA常用小代码,请关注:@EXCELers






    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多