ExcelVBA 将多张工作表中的数据合并到一张工作表中

本文介绍了如何使用ExcelVBA将多个工作表中的数据高效地合并到一张工作表中,以解决实际工作中常见的数据汇总问题。通过VBA编程,实现了从各分表中提取成绩记录并整合到指定的汇总表中,详细解析了关键代码行的作用,如Set关键字、Rows集合、Range对象的End和Offset属性,以及Resize属性的应用。
摘要由CSDN通过智能技术生成

在工作中,我们经常遇到多张工作表合并到一张工作表的问题,比如希望将图1所示中各分表中保存的成绩记录,汇总到工作簿中的"成绩表"工作表中,可以用图2下面的程序。

图1 七(3)班工作表中的成绩记录

 

图2 汇总结果

Sub hebing()     '把各班成绩表中的记录合并到"成绩表"工作表中     Dim sht As Worksheet     Set sht = Worksheets("成绩表")     sht.Rows("2:" & sht.rows.count).Clear      '删除成绩表中的原有记录     Dim wt As Worksheet, xrow As Integer, rng As Range     For Each wt In Worksheets                   '循环处理工作簿中的每张工作表         If wt.Name <> "成绩表" Then             Set rng = sht.Range("A1048576").End(xlUp).Offset(1, 0)             xr
Excel VBA中,如果你想把不同工作簿的所有工作合并到一个工作簿中的指定工作,可以使用`Worksheets.Add`和`Range.Copy`方法。下面是一个基本的示例,假设你想合并名为"Sheet1"的所有工作簿,并将它们添加到当前工作簿的最后一个工作之后: ```vba Sub MergeAllSheetsFromOtherWorkbooks() Dim wbTarget As Workbook Dim wbSource As Workbook Dim wsSource As Worksheet Dim wsTarget As Worksheet Dim lastRow As Long '设置目标工作簿和工作 Set wbTarget = ThisWorkbook '当前工作簿 Set wsTarget = wbTarget.Worksheets.Add(After:=wbTarget.Worksheets(wbTarget.Worksheets.Count)) '新建一个工作作为目标 '遍历所有打开的工作簿 For Each wbSource In Application.Workbooks If wbSource.Name <> ThisWorkbook.Name Then '排除当前工作簿 For Each wsSource In wbSource.Worksheets '遍历每个工作簿的每个工作 If wsSource.Name = "Sheet1" Then '只考虑名称为"Sheet1"的工作 '获取源工作的最后一行 lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row '复制数据到目标工作 wsTarget.Range("A" & wsTarget.Cells.Count).End(xlUp).Offset(1).Resize(lastRow, wsSource.Columns.Count).Value = wsSource.Range("A1").CurrentRegion.Value End If Next wsSource End If Next wbSource MsgBox "所有工作簿的Sheet1已合并至当前工作簿的最新工作", vbInformation End Sub ``` 运行此宏后,所有符合条件的工作簿的Sheet1会被合并到新的工作表中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值