工作中经常会用到的把几个 Excel 文件合并到一个,或者是把一个 Excel 文件里的所有 Sheet 合并到一个 Sheet 来进行统计。下面分别提供用 vba 宏来解决这两个问题的方法。

1、合并Excel文件

打开一个空Excel文件,Alt+F11,插入一个模块,开始写代码:

Sub MergeWorkbooks()Dim FileSetDim i As IntegerOn Error GoTo 0Application.ScreenUpdating = FalseFileSet = Application.GetOpenFilename(FileFilter:="Excel 2003(*.xls),*.xls,Excel 2007(*.xlsx),*.xlsx", _MultiSelect:=True, Title:="选择要合并的文件")If TypeName(FileSet) = "Boolean" ThenGoTo ExitSubEnd IfFor Each Filename In FileSetWorkbooks.Open FilenameSheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)NextExitSub:Application.ScreenUpdating = TrueEnd Sub

这段代码的作用:它首先打开一个文件选择框,你可以选择一个或多个文件,然后把这些文件里的所有Sheet合并到当前这个工作簿里来,有重名的Sheet会自动在后面加数字。

2、合并一个EXCEL多个sheet的内容到一个汇总sheet

同上,再添加一个模块吧,代码如下:

Function LastRow(sh As Worksheet)On Error Resume NextLastRow = sh.Cells.Find(what:="*", _After:=sh.Range("A1"), _Lookat:=xlPart, _LookIn:=xlFormulas, _SearchOrder:=xlByRows, _SearchDirection:=xlPrevious, _MatchCase:=False).RowOn Error GoTo 0
End FunctionSub MergeSheets()Dim sh As WorksheetDim DestSh As WorksheetDim Last As LongDim shLast As LongDim CopyRng As RangeDim StartRow As LongApplication.ScreenUpdating = FalseApplication.EnableEvents = False'新建一个“汇总”工作表Application.DisplayAlerts = FalseOn Error Resume NextActiveWorkbook.Worksheets("汇总").DeleteOn Error GoTo 0Application.DisplayAlerts = TrueSet DestSh = ActiveWorkbook.Worksheets.AddDestSh.Name = "汇总"'开始复制的行号,忽略表头,无表头请设置成1StartRow = 2For Each sh In ActiveWorkbook.WorksheetsIf sh.Name <> DestSh.Name ThenLast = LastRow(DestSh)shLast = LastRow(sh)If shLast > 0 And shLast >= StartRow ThenSet CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))If Last + CopyRng.Rows.Count > DestSh.Rows.Count ThenMsgBox "内容太多放不下啦!"GoTo ExitSubEnd IfCopyRng.CopyWith DestSh.Cells(Last + 1, "A").PasteSpecial xlPasteValues.PasteSpecial xlPasteFormatsApplication.CutCopyMode = FalseEnd WithEnd IfEnd IfNextExitSub:Application.GoTo DestSh.Cells(1)DestSh.Columns.AutoFitApplication.ScreenUpdating = TrueApplication.EnableEvents = TrueEnd Sub

这段代码的作用:它会新建一个叫做“汇总”的工作表,然后把当前工作簿里的所有Sheet里有数据的内容都复制到“汇总”表里。提示:如果数据表里的内容没有表头的话需要把StartRow = 2改成StartRow = 1。

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 iEnd Sub

多个excel工作簿汇总,同一工作簿中sheets合并相关推荐

  1. excel 汇总 mysql_Excel中用SQL语句实现多工作簿汇总

    对于经常使用Excel的人来说,在Excel中使用SQL能高效处理你的数据,但据我所知Excel中的SQL语法与MySQL数据的语法还有点不一样.现在我就来实例说明如何用SQL语句对多个工作簿进行汇总 ...

  2. excel汇总数据之汇总多工作簿

    ​ 1.如下图有三个工作簿,现在我们想要快速汇总出这三个工作簿各数据之和. ​ 2.点击下图选项(Excel工具箱,百度即可了解详细的下载安装信息,本文这里就不做具体解说) ​ 3.点击[汇总拆分], ...

  3. 跨工作表汇总与跨工作簿汇总,支持WPS和Excel

    跨工作表汇总与跨工作簿汇总,支持WPS和Excel 跨工作表汇总与跨工作簿汇总,汇总方式包含求和.计数.求平均值.千百个表格瞬间汇总完成.支持WPS和Excel.

  4. Excel VBA 将不同工作簿中的工作表,按照工作表名里相同的关键词汇总

    命令从下面第一个Sub开始: Sub Collectwks() Dim Sht As Worksheet, rng As Range, Sh As Worksheet Dim Trow&, k ...

  5. excel中使用VBA进行多工作簿或多工作表一键汇总

    1. 同一目录下的多工作簿,每个工作簿中有一张或多张工作表,一键全部汇总 Sub 合并目录所有工作簿全部工作表()Dim MP, MN, AW, Wbn, wnDim Wb As WorkbookDi ...

  6. excel合并多个工作表_如何快速的合并多个 Excel 工作簿至一个工作簿中的工作表?...

    作者:汪汪家的宝贝 链接:https://www.jianshu.com/p/c8ae6852f1da 前言 在日常工作过程中,我们有可能需要把多个Excel工作簿的内容汇总到一张Excel工作表中. ...

  7. 删除 多个表_合并汇总多个工作簿多个工作表,删除修改新增更新内容只需刷新...

    要求:1.把多个工作簿的多个工作表内容合并汇总 2.后续在任一工作表内删除修改新增内容,无需再重新做表 3.后续在任一工作簿中新增一个或多个工作表,无需再重新做表 4.后续在文件夹中添加一个或多个Ex ...

  8. 拆分工作簿为多个文件_如何批将Excel的多个Sheet工作表拆分为独立的工作簿?...

    上一节我们分享了一个工作表拆分为多个工作表的方法,拆分完成之后,我们可能需要把各营业部的数据分别发送给各营业部的负责人,此时,发现各营业部的数据都在一个一个Sheet工作表中,发送是有些不方便呢. 一 ...

  9. Excel多工作薄汇总——《超级处理器》应用

    怎么将下面的工作簿合并到一张工作表中: 所有工作簿 每个工作簿中的数据格式如下: 工作表内容格式 网上有很多教程,但相对比较复杂,我们用<超级处理器>,点点鼠标就可以完成,一起来看下具体怎 ...

最新文章

  1. swift禁用webView对H5中数字,链接,日期,地址,电话号码做解析
  2. table1函数----一维查表
  3. 分发 WxWidgets 应用程序
  4. 链表中位数(Middle of the Linked List)
  5. java 存储过程 数组_Java调用存储过程返回数组
  6. 自己做的一个登录页面,纯代码!
  7. C#LeetCode刷题-深度优先搜索
  8. idea展示runDashboard的窗口
  9. MFC开发IM-第八篇、调整各个控件的上下tab顺序
  10. js 实现ReplaceAll 的方法
  11. Windows XP 下安装Perl cpan模块
  12. Linux下安装禅道
  13. 蓝桥杯算法提高 盾神与条状项链
  14. java调试步骤_Java程序的开发过程及基本调试方法
  15. Vue MVVM模型
  16. mysql数据库取交集_不同数据库取并集、交集、差集
  17. 安装百度网盘是提示不能打开要写入的文件
  18. CCF201412-1门禁系统(C语言)
  19. Linux-iptables详解
  20. base cap 分布式_1、分布式基础之CAP和BASE理论

热门文章

  1. QT程序自动升级方案
  2. pycharm中scrapy库的安装以及创建
  3. 有色金属行业数字化之路探析
  4. windows程序设计读书笔记四
  5. java 标签云_网站标签云(TagCloud)的实现
  6. 深入理解 RecyclerView 的绘制流程和滑动原理,直面春招
  7. 张小庆,在路上-开始(2)第一天上班
  8. linux如何设置mac快捷键,Mac与Linux常用快捷键汇总
  9. 标 题: 慕尼黑:关于跑步的记忆 zz
  10. E. The LCMs Must be Large(思维)