合并同一个工作簿中的多个工作表

实际工作中,我们往往将同一种类型的数据表保存为一个工作簿(一个Excel文件),然后按不同日期、部门或其他属性在工作簿里创建多个工作表录入数据。有时候不免有将这些分开的工作表合并到一个工作表中的需求。满足这个需求有很多方法,分工作表数量较多时利用VBA来实现不失为一个简单高效的途径。
每一个工作表(Worksheet)都有一个属性UsedRange,这个属性记录了该工作表中已使用的区域。利用这个属性可以轻松复制每个工作表中的内容,也能轻松计算出工作表中空白区域的起始位置。以下代码利用这一属性实现了将工作簿中的其他工作表合并到第一个工作表中。

Sub 工作表合并()
    Dim i%, row%, usedRows%, usedColumns%, sheetCombined As Worksheet
    ' 指定合并表为哪一个工作表,这里是第一个
    Set sheetCombined = Worksheets(1)
    ' 遍历分表,复制其内容粘贴到总表里
    For i = 2 To Worksheets.Count
        ' 求出分表有数据的行数和列数
        usedRows = Worksheets(i).UsedRange.Rows.Count
        usedColumns = Worksheets(i).UsedRange.Columns.Count
        ' 复制分表数据内容。我这里是排除标题行不复制,如果不排除标题行,
        ' 上两行加下两行代码直接用Worksheets(i).UsedRange.Copy替换即可
        Worksheets(i).Range(Worksheets(i).Cells(2, 1), _
            Worksheets(i).Cells(usedRows, usedColumns)).Copy
            
        ' 求出总表中未编辑区域最小行号
        row = sheetCombined.UsedRange.Rows.Count + 1
        ' 将复制出来的数据粘贴到总表未编辑区域中
        sheetCombined.Cells(row, 1).PasteSpecial
        
    Next
End Sub

以上代码运行示例如下(示例中不同工作表结构相同,实际上结构不同也可以合并,只需在复制分工作表时直接复制工作表的UsedRange,参见代码注释):

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yivifu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值