excel合并多个工作表_Excel应用实践15:合并多个工作表

学习Excel技术,关注微信公众号:

excelperfect

有时候,我们需要将工作簿中的所有工作表的数据合并到一个工作表中。如果工作表数量很少,可以直接手工使用复制粘贴操作,然而,如果工作表很多并且工作表中的数据量很大,手工复制既繁琐又容易出错漏。

还好有VBA,对于这种情况,编写少量的代码,即可迅速且准确无误地完成合并工作。

下面的代码假设每个工作表中的标题行相同。代码将新建一个工作表,将工作簿所有工作表中的数据合并到这个新工作表中。

Sub CombineSheets()

    '声明变量

    Dim lngSheets As Long

    Dim arrSheetNames As Variant

    Dim rngCopy As Range

    Dim rngPaste As Range

    Dim rngTarget As Range

    Dim wks As Worksheet

    Dim wksNew As Worksheet

    Dim i As Long

    '以当前工作表中的数量定义数组大小

    ReDim arrSheetNames(1 ToThisWorkbook.Worksheets.Count)

    '遍历工作表并将其名称存储在数组中

    For i = LBound(arrSheetNames) To(UBound(arrSheetNames))

        arrSheetNames(i) = ThisWorkbook.Worksheets(i).Name

    Next i

    '添加一个新工作表并将其放置在所有工作表之后

    With ThisWorkbook

        Set wksNew =.Worksheets.Add(after:=.Worksheets(.Worksheets.Count))

    End With

    '设置粘贴数据的位置

    Set rngTarget =wksNew.Range("A1")

    '遍历工作表并将工作表中的数据粘贴到新工作表中

    For lngSheets = LBound(arrSheetNames) ToUBound(arrSheetNames)

        On Error Resume Next

        Set wks =ThisWorkbook.Worksheets(CStr(arrSheetNames(lngSheets)))

        If wks Is Nothing Then GoTo NextSheet

        If lngSheets = LBound(arrSheetNames)Then

            Set rngCopy = wks.UsedRange

            Set rngPaste = rngTarget

        Else

            '更新粘贴数据的位置

            Set rngPaste =rngPaste.Offset(rngCopy.Rows.Count)

            With wks

                '复制除标题行之外的数据

                Set rngCopy =Intersect(.UsedRange, .UsedRange.Offset(1))

            End With

        End If

        '复制

        rngCopy.Copy

        '粘贴值与格式

        rngPaste.PasteSpecial xlPasteValues

        rngPaste.PasteSpecial xlPasteFormats

        '去除复制单元格周边的框线

        Application.CutCopyMode = False

NextSheet:

    Next lngSheets

    '清理变量

    Set rngCopy = Nothing

    Set rngPaste = Nothing

    Set rngTarget = Nothing

    Set wksNew = Nothing

    Set wks = Nothing

End Sub

代码的图片版如下:

02dc10601077f8316bbd23e1c15b6e6b.png

ff7292da9be30b3ddc716fa90ae65ebc.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值