Excel办公软件分享:应用篇 多表格合并(2)

上次我们分享多表格合并为一个表格,并且说了这个过程主要分为两步,①多个Excel表合并到一个EXCEL表的多个sheet;②一个Excel表的多个sheet合并到同一个sheet里面。①我们已经分享,今天我们分享一下怎么把一个Excel表里的多个sheet合并到同一个sheet里面,依然需要用代码,把多次重复的工作交给机器去完成。


执行代码为

Sub 合并工作表()

Dim NewSht As Worksheet, ActiveWb As Workbook

Set ActiveWb = ActiveWorkbook '将活动工作簿赋值给变量ActiveWb

Set NewSht = Workbooks.Add.Sheets(1) '新建一个工作簿,将它的第1个工作表赋值给变量NewSht(此时活动工作簿不再是ActiveWb所代表的工作簿了)

'声明一个Worksheet型变量Sht,用于For Each...Next循环语句的变量,以及一个Integer型的变量,作为计数器使用,代表被合并的工作表数量

Dim Sht As Worksheet, i As Integer

For Each Sht In ActiveWb.Worksheets '遍历ActiveWb的每一个工作表(使用Worksheets而不是Sheets,会跳过图表)

i = i + 1 '累加变量

Sht.UsedRange.Copy '复制sht工作表的已用数据区域

'如果变量i的值等于1,那么取工作表NewSht的B1赋值给变量rng,否则取B列最后一个非空单元格的下一个单元格赋值给变量rng,此变量为粘贴复制单元格的开始位置

Set rng = IIf(i = 1, Range("B1"), NewSht.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0))

rng.PasteSpecial Paste:=xlPasteFormats '选择性粘贴格式

rng.PasteSpecial Paste:=xlPasteColumnWidths '选择性粘贴列宽

rng.PasteSpecial Paste:=xlPasteValues '选择性粘贴数值

rng.Offset(0, -1).Resize(Sht.UsedRange.Rows.Count, 1).Merge '合并首列

rng.Offset(0, -1) = Sht.Name '将原工作表名称写入合并单元格

Next Sht

'如果变量i大于0,那么将A列的非空单元格添加边框

If i > 0 Then Application.Intersect(Range("a:a"), NewSht.UsedRange).Borders.LineStyle = xlContinuous

End Sub

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容