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

1、合并Excel文件

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

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) Next ExitSub: Application.ScreenUpdating = True End Sub

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

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

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

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 0 End Function Sub 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 Next ExitSub: Application.GoTo DestSh.Cells(1) DestSh.Columns.AutoFit Application.ScreenUpdating = True Application.EnableEvents = True End Sub

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

通过VBA宏合并Excel工作表相关推荐

  1. 3分钟学会在C ++中以编程方式合并Excel工作表中的单元格

    合并和取消合并单元格是Microsoft Excel的一项简单且常用功能.合并单元格可能会在某些情况下很有用,例如,当工作表中有多个列共享相同的标题时,可以合并列上方的单元格以使其具有共同的标题.如果 ...

  2. VBA中使用EXCEL工作表函数

    EXCEL的VBA有两个函数库,一个是VBA的函数库,另一个是EXCEL工作表函数,也就是我们在单元格中使用的函数,两个函数库不是完全一样的.例如FIND(),VLOOKUP(),在VBA的函数库中是 ...

  3. 批量合并excel工作表

    (1)以下代码适用于并列的多个文件夹内分别含有一个excel文件的情况,且后缀名为.xlsx,其他格式可修改红色字体. (2)工作表合并后按文件夹名称排列,所以文件夹需先按顺序重命名,如00.01.0 ...

  4. VBA数组和Excel工作表数据传递

    本文介绍如何利用 VBA 的数组(Array) 来提高 Excel 单元格和外部数据传输的性能.如果数量比较大,通过 Array 来传输数据比直接操作单元格要快若干倍. 将 Range 的数据写入 V ...

  5. Excel简单宏定义(快速合并多个表格,合并多个工作表,合并特定工作表)

    文章目录 前言 具体操作 总结 前言 Excel简单宏定义(快速合并多个表格,合并多个工作表,合并特定工作表) 具体操作 合并当前工作簿下的所有工作表 Sub 合并当前工作簿下的所有工作表() On ...

  6. 用VBA去除Excel工作表保护密码

    今天帮同事解决个EXCEL问题,现记在这,以作备忘 现象: 想要修改保护单元 格的内容,在使用"工具"菜单"保护"子菜单的"撤消工作表保护" ...

  7. excel 宏 把一个工作表按照某几个列拆分为多个工作表

    前言 step 1 进入excel vba编程界面 step 2 粘贴代码 step 3 运行代码 step 4 删除宏代码 前言 这两天接触到excel比较多,才发现使用excel不仅仅是简单的复制 ...

  8. 用VBA摇滚Excel工作表

    VBA (Visual Basic for Applications) is widely used for automating MS-Office products. Most of the ti ...

  9. vba ado返回集合_利用ADO,实现同一文件夹下多个EXCEL工作表的数据汇总

    大家好,今天继续讲解<VBA数据库解决方案>,今日讲解的是第37讲,利用ADO,实现同一文件夹下多个EXCEL工作表的数据汇总.最近的内容实用性比较强,如今日的内容,只把需要汇总的EXCE ...

最新文章

  1. centos7 更新yum安装源
  2. 【Microstation】第三章:Microstation三维模型构建与编辑
  3. Cloud一分钟 |百度遭北京信管局行政处罚;双11计算能力超100万核;腾讯回应高管被抓系谣言...
  4. 《解剖PetShop》系列之一(转)
  5. 设计模式(一)---单一职责原则
  6. Visual Studio 2010修改授权
  7. 开源组件XStream 修复11个漏洞并公开 PoC
  8. 算法直观与对模型的理解(二)
  9. 【thm】windows内网提权之Windows PrivEsc Arena
  10. 利用VBB仿真——实现24小时电子钟
  11. 软件项目管理:软件工具与开发环境相关知识介绍
  12. PERCENT_RANK 函数
  13. .net core 使用阿波罗配置中心
  14. GIC Partitioning
  15. 用SQL查询创建水平、垂直直方图
  16. python时间戳是什么意思_python时间戳是什么
  17. 喜讯!双驰企业正式成为欧盟地平线2020 项目合作伙伴
  18. 记录一次使用Autowired报Nullpoint空指针异常的错误
  19. debian squeeze安装Broadcom网卡驱动全程
  20. 1.传感器学习笔记之初次相识

热门文章

  1. 按课程查询学生成绩C语言,C语言课程设计. 根据学号等信息查询学生成绩
  2. 如何自学UI设计?如何成为UI设计师?
  3. 【资料分享】工程师必备物联网资料合集 电子书PDF
  4. PaddleSpeech:windows下用python快速安装和使用
  5. 友盟push java_友盟U-Push推送与获取状态
  6. 建筑八大员培训湖北劳务员培训施工现场劳务人员多元化管理
  7. 线性插值(双线性)(三线性)
  8. 真正厉害的人,都在延迟满足
  9. docker中的rabbitmq经常莫名其妙的退出
  10. 自考学历和成考学历哪个更高一些 有啥区别