最新消息:本站原qzkyl域名已转让,后期该域名所有言论与本站无关,同时本站已改名ipve虚拟机,交换友链请发送邮件zc#ipve.cn(#换@)

EXCEL-VBA常用小代码:汇总各分表数据到总表

Office ipve 361浏览 0评论

       举个例子,如下图,一个工作簿,包含多个工作表,现在需要将各个分表的数据汇总到总表中……

微信图片_20180328164403.jpg

碰到这样的问题,有些小伙伴会想到使用数据透视表或者合并计算等方式进行操作。

但这两种操作方式都有它的局限性。

比如说,它们是统计汇总数据而不是收集明细记录;另外,当标题行或列是多行(多列),甚至存在合并单元格时,它们也就无能无力了。

等等……

代码一两行,工作不用愁断肠。面对这样的情况,VBA小代码解决方案如下:

    Sub CollecShtData()
    Dim Sht As Worksheet, Rng As Range, k&, Trow&
    Trow = Val(InputBox("请输入标题的行数", "提醒"))
    If Trow < 0 Then MsgBox "标题行数不能为负数。", 64, "警告": Exit Sub
    '取得用户输入的标题行数,如果为负数,退出程序
    Application.ScreenUpdating = False
    Cells.ClearContents '清空当前表数据
    Cells.NumberFormat = "@" '设置文本格式
    For Each Sht In Worksheets '遍历表格
        If Sht.Name <> ActiveSheet.Name Then
        '如果表格名称不等于当前表名则进行复制数据……
            Set Rng = Sht.UsedRange
            k = k + 1
            If k = 1 Then
            '如果是首个表格,则K为1,则把标题行一起复制到汇总表
                Rng.Copy
                [a1].PasteSpecial Paste:=xlPasteValues
            Else
                '如K不等于1,扣除标题行后再复制黏贴到总表,只黏贴数值
                Rng.Offset(Trow).Copy
                Cells(ActiveSheet.UsedRange.Rows.Count + 1, 1).PasteSpecial Paste:=xlPasteValues
            End If
        End If
    Next
    [a1].Activate
    Application.ScreenUpdating = True
    MsgBox "一共汇总了" & k & "个表格。"
End Sub

操作过程,参考下面的动画教程:

635.gif

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址