如何将分表汇总到总表_汇总分表成总表,并保留源表格式?只需一键!

753ee75e05c95db7906ca3b22c6f8b58.png 每天一篇Excel技术图文 微信公众号:Excel星球 NO.175-多表汇总 作者:看见星光  微博:EXCELers / 知识星球:Excel 嗨,大家好,我是星光。
之前分享过一段VBA小代码,作用是 将多个工作表的数据汇总成总表 ,但那段代码并没有保留原工作表的格式。在实际工作中,有些朋友是需要保留源表格式的。 动画演示效果如下: 702ef3dbc2ca6197b6d41fc4e68a8e77.gif 以下代码,在将各工作表数据汇总的同时,也保留了源表格式,且复制即可使用。
如果你还不会使用VBA代码,参考教程:如何运行VBA代码?其实很简单 代码如看不全可以左右拖动..▼
Sub CollectDataFromShtFormat()    Dim sht As Worksheet, rng As Range, k As Long    Dim nTitleCount As Long, x As Long, shtA As Worksheet    On Error Resume Next    nTitleCount = Val(InputBox("请输入标题的行数", "提醒", 1)) '用户输入标题行行数,默认为1    If nTitleCount < 0 Then MsgBox "标题行数不能为负数。", 64, "提示": Exit Sub    Application.ScreenUpdating = False '取消屏幕刷新    Set shtA = Worksheets("我的汇总表") '指定放置汇总数据的工作表    If Err Then '如果当前工作簿不存在shtA则新建一张        Set shtA = Worksheets.Add        shtA.Name = "我的汇总表"    End If    shtA.Select    Cells.Clear '清空当前表数据    For Each sht In Worksheets '遍历工作表        If sht.Name <> ActiveSheet.Name Then '如果工作表名称不等于当前表名则进行汇总动作……            Set rng = sht.UsedRange '已用区域            k = k + 1 '计数器            If k = 1 Then '如果是首个表格,则K为1,则把标题行一起复制到汇总表                sht.Cells.Copy: Range("a1").PasteSpecial Paste:=xlPasteFormats '保留格式                rng.Copy Range("a1")            Else '否则,扣除标题行后再复制黏贴到总表                x = Cells.Find("*", _                    LookIn:=xlFormulas, SearchOrder:=xlByRows, _                    SearchDirection:=xlPrevious).Row + 1 '最后存在数据的行                rng.Offset(nTitleCount).Copy Cells(x, 1)            End If        End If    Next    Range("a1").Select    Application.ScreenUpdating = True '恢复屏幕刷新    MsgBox "汇总OK,一共汇总了:" & k & "张工作表"End Sub

白鹤亮翅,打完收工。

更多VBA常用小代码▼

关注本公众号=>

【菜单】=>【资源】=>【常用代码】

▎全方位系统学习Excel 下方 扫码加入 我的 Excel社群 d791b3b020009087903d419f67061a27.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值