快速合并同一个excel表中的多个sheet
2016-01-18 13:42
429 查看
很多朋友会遇到这样的问题,就是很有很多页的数据,少的有几十页,多的可能有几百页,然后需要合并到一个页面做数据分析,如果一页页的复制粘贴的话,就比较麻烦。下面我就介绍一种利用excel的宏计算来解决这个问题。
一、数据准备
![](https://img-blog.csdn.net/20160118133907521?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160118134541535?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
二、合并效果
![](https://img-blog.csdn.net/20160118133948398?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
三、代码
在Sheet1上右键→查看代码,打开代码编辑器,写入如下内容:
Sub combo()
Dim Wk As Workbook, Sht As Worksheet, n As Integer, MyPath, MyName
Application.ScreenUpdating = False
Application.EnableEvents = False
n = 1
MyPath = ThisWorkbook.Path & "\" '指定路径
MyName = Dir(MyPath & "\" & "*.xls") '寻找第一项
Do While MyName <> "" '开始循环
If MyName <> ThisWorkbook.Name Then
Set Wk = Workbooks.Open(MyPath & "\" & MyName)
Wk.Sheets(1).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) '此处只插个第一个sheet
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = Mid(MyName, 1, Len(MyName) - 4) '重新命名sheet
'For Each Sht In Wk.Sheets '多个sheet
'Sht.Name = Format(n, "000″)
'n = n + 1
'Next
Wk.Close False
End If
MyName = Dir '查找下一个
Loop
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
一、数据准备
二、合并效果
三、代码
在Sheet1上右键→查看代码,打开代码编辑器,写入如下内容:
Sub UnionSheets() Application.ScreenUpdating = False For i = 1 To Sheets.Count If Sheets(i).Name <> ActiveSheet.Name Then X = Range("A65536").End(xlUp).Row + 1 '获取当前sheet中已有的行数,从+1行开始 Sheets(i).UsedRange.Copy Cells(X, 1) '往当前sheet中的Cells(X, 1)开始复制数据 End If Next Range("A1").Select '选中第一个单元格(返回到顶部) Application.ScreenUpdating = True MsgBox "合并完毕!", vbInformation, "提示" End Sub另外,将多个Excel文件合并为一个,可用如下代码来实现:
Sub combo()
Dim Wk As Workbook, Sht As Worksheet, n As Integer, MyPath, MyName
Application.ScreenUpdating = False
Application.EnableEvents = False
n = 1
MyPath = ThisWorkbook.Path & "\" '指定路径
MyName = Dir(MyPath & "\" & "*.xls") '寻找第一项
Do While MyName <> "" '开始循环
If MyName <> ThisWorkbook.Name Then
Set Wk = Workbooks.Open(MyPath & "\" & MyName)
Wk.Sheets(1).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) '此处只插个第一个sheet
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = Mid(MyName, 1, Len(MyName) - 4) '重新命名sheet
'For Each Sht In Wk.Sheets '多个sheet
'Sht.Name = Format(n, "000″)
'n = n + 1
'Next
Wk.Close False
End If
MyName = Dir '查找下一个
Loop
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
相关文章推荐
- SQL语句优化技巧
- HDU2141:Can you find it? (二分)
- Android SDK Manager更新太慢的解决方法
- IE6不支持最小高度min-height时
- JavaScript 自调用匿名函数
- Java 动态代理机制分析及扩展(1)
- IntelliJ IDEA 14 + Phonegap 5.1 + Android SDK + Genymotion + linux
- spoj LCMSUM
- useradd
- Material Design之TabLayout+ViewPager
- 关于web项目配置cors跨域
- SpringMVC 集成tiles时报 Connection timed out
- Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
- Delphi获取句柄并发送消息
- FFmpeg 基本用法
- Android面试题2
- ios基本控件之UITextField
- apache设置默认首页
- assert()方法
- 常用正则表达式大全!