多个excel工作簿汇总,同一工作簿中sheets合并
来源:互联网 发布:北京 软件联盟 编辑:程序博客网 时间:2024/04/29 10:02
工作中经常会用到的把几个Excel文件合并到一个,或者是把一个Excel文件里的所有Sheet合并到一个Sheet来进行统计。下面分别提供用vba宏来解决这两个问题的方法。
Sub MergeWorkbooks() Dim FileSet Dim i As Integer On Error GoTo 0 Application.ScreenUpdating = False FileSet = Application.GetOpenFilename(FileFilter:="Excel 2003(*.xls),*.xls,Excel 2007(*.xlsx),*.xlsx", _ MultiSelect:=True, Title:="选择要合并的文件") If TypeName(FileSet) = "Boolean" Then GoTo ExitSub End If For Each Filename In FileSet Workbooks.Open Filename Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) NextExitSub: Application.ScreenUpdating = TrueEnd Sub
Function LastRow(sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find(what:="*", _ After:=sh.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0End FunctionSub MergeSheets() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long Dim shLast As Long Dim CopyRng As Range Dim StartRow As Long Application.ScreenUpdating = False Application.EnableEvents = False '新建一个“汇总”工作表 Application.DisplayAlerts = False On Error Resume Next ActiveWorkbook.Worksheets("汇总").Delete On Error GoTo 0 Application.DisplayAlerts = True Set DestSh = ActiveWorkbook.Worksheets.Add DestSh.Name = "汇总" '开始复制的行号,忽略表头,无表头请设置成1 StartRow = 2 For Each sh In ActiveWorkbook.Worksheets If sh.Name <> DestSh.Name Then Last = LastRow(DestSh) shLast = LastRow(sh) If shLast > 0 And shLast >= StartRow Then Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast)) If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then MsgBox "内容太多放不下啦!" GoTo ExitSub End If CopyRng.Copy With DestSh.Cells(Last + 1, "A") .PasteSpecial xlPasteValues .PasteSpecial xlPasteFormats Application.CutCopyMode = False End With End If End If NextExitSub: Application.GoTo DestSh.Cells(1) DestSh.Columns.AutoFit Application.ScreenUpdating = True Application.EnableEvents = TrueEnd Sub
3.按需合并工作表
在EXCEL中打开宏,将下列代码进行粘贴并保存。然后返回你需要合并的工作表中,运行此宏,看看效果吧。
Sub 合并sheets()
n = 12 '源表个数,根据需要修改!
nstart = 9 '每个单表数据的开始行数,根据需要修改!
k = nstart '目标表的行标
For i = 1 To n
irow = nstart '行标
While Sheets(i).Cells(irow + 1, 2) <> "" '后面个1以第2列数据的最后1行是空作为行结束标示,确定源表的行数,根据需要修改!
irow = irow + 1
Wend
Sheets(i).Rows(nstart & ":" & irow).Copy '复制源数据行
Sheets(n + 1).Activate
Sheets(n + 1).Cells(k, 1).Select
ActiveSheet.Paste '粘贴数据
k = k + irow - nstart + 1
Next i
End Sub
1 0
- 多个excel工作簿汇总,同一工作簿中sheets合并
- 合并多个EXCEL工作簿
- 使用VBA合并多个Excel工作簿
- 使用VBA合并多个Excel工作簿
- excel VBA合并工作簿
- SSIS FOR EXCEL 多工作簿多工作表合并
- 使用工作区一次打开多个Excel工作簿
- 合并多个工作簿为一个工作簿和拆分工作簿为多个工作簿
- Excel合并多个工作表(Sheet)到一个Sheet中脚本
- Excel多个工作表(Sheet)合并
- EXCEL:读取多个WORD文档文件到EXCEL同一工作表
- 如何将EXCEL中同一个工作薄多张工作表合并
- Excel Sheets 数据合并
- NPOI导出Excel表功能实现(多个工作簿)
- 在多个Excel工作簿间快速切换
- NOPI技术实现 Excel表格多个sheet工作簿
- 如何将一个excel工作簿中的多张表合并到一张表中
- 导出合并后的多个工作表在一个EXCEL中,首先引用CarlosAg.ExcelXmlWriter.dll
- 30岁以后该如何实现资产增值?
- CentOS挂载NTFS硬盘
- IIS Express添加MIME映射
- MyBatis-Spring-TransactionManager
- 动态内存的分配,包括 new delete malloc realloc free,一维数组和二维数组
- 多个excel工作簿汇总,同一工作簿中sheets合并
- eclipse、android开发,查看软件布局神器
- The connection to adb is down, and a severe error has occured.勘误
- SqlServer
- poj 2352 Stars (树状数组)
- Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! ..错误解决
- 乐观主义者信奉的六个原则
- CentOS 安装中文输入法
- Chapter 1 Securing Your Server and Network(11):使用透明数据库加密