趣文网 > 作文大全

Excel用VBA代码一键合并汇总多个工作簿 省时省力必学!

2020-11-20 21:30:01
相关推荐

有时候,你需要将几十个工作簿中的内容,快速汇总至合并至一个工作簿,如果手动一个复制粘贴,那心里有苦说不出。。。

今天将大家用VBA一键合并,只需要几秒种,为了测试这段代码,我们新建了4个工作簿在文件夹中,数据都是模拟的,做试验

一键合并代码操作如下所示:

我们看原始表格数据,其中,第1个工作簿有点特殊,这个工作簿中,有两个工作表,第1个工作表的内容是:

第2个工作表的内容是:

第2,3,4个工作簿中都是仅有1个工作表,如下所示:

通过代码,我们一键可以合并,得到结果,这个汇总的结果有两个特点

1、最后一列,还会显示这些数据的来源是哪个工作簿,哪个表名的。

2、原始数据中每一行的标题自动取消,只保留了一个标题。

如下所示:

在Excel菜单栏中,点击开发工具,打开VBA,输入如下代码:

其中代码如下所示:

Sub 合并目录所有工作簿全部工作表()

Dim MP, MN, AW, Wbn, wn

Dim Wb As Workbook

Dim i, a, b, d, c, e

Application.ScreenUpdating = False

MP = ActiveWorkbook.Path

MN = Dir(MP & "" & "*.xls")

AW = ActiveWorkbook.Name

Num = 0

e = 1

Do While MN <> ""

If MN <> AW Then

Set Wb = Workbooks.Open(MP & "" & MN)

a = a + 1

With Workbooks(1).ActiveSheet

For i = 1 To Sheets.Count

If Sheets(i).Range("a1") <> "" Then

Wb.Sheets(i).Range("a1").Resize(1, Sheets(i).UsedRange.Columns.Count).Copy .Cells(1, 1)

d = Wb.Sheets(i).UsedRange.Columns.Count

c = Wb.Sheets(i).UsedRange.Rows.Count - 1

wn = Wb.Sheets(i).Name

.Cells(1, d + 1) = "表名"

.Cells(e + 1, d + 1).Resize(c, 1) = MN & wn

e = e + c

Wb.Sheets(i).Range("a2").Resize(c,d).Copy .Cells(.Range("a1048576").End(xlUp).Row + 1, 1)

End If

Next

Wbn = Wbn & Chr(13) & Wb.Name

Wb.Close False

End With

End If

MN = Dir

Loop

Range("a1").Select

Application.ScreenUpdating = True

MsgBox "共合并了" & a & "个工作薄下全部工作表。如下:" & Chr(13) & Wbn, vbInformation, "提示"

End Sub

天天有小伙伴说,教程太简单,整点高端的,我就不解释代码了,大家有需求的直接用代码合并,欢迎留言讨论,点赞,转发

阅读剩余内容
网友评论
显示评论内容(2) 收起评论内容
  1. 2021-10-07 04:40国之何存[台湾省网友]IP:3407800342
    感谢分享VBA代码对我直是个难点但是了这个教程感觉也能学会了!非常感谢!
    顶9踩0
  2. 2020-07-01 09:55┌.潶与絔℡[辽宁省网友]IP:1730832623
    这个教程太实用了Excel合并汇工作簿直是我痛点终于可以省省力了!
    顶8踩0
相关内容
延伸阅读
小编推荐

大家都在看

初中作文字数要求 关于文化传承的作文 我爱森林作文 秋天作文900字 社会核心主义价值观作文 当家的滋味作文400字 双节日作文 游公园作文100字 以孝为话题作文 有关祖国的作文 手机的优点和缺点作文 小学四年级作文我的梦想 怎么写小猫作文 猜猜她是谁作文300字 我骄傲我是一个自信的人作文 作文缓冲 如何列作文提纲 酷作文600字 我的理想作文500字 我是五年级学生作文 寻找答案作文 挫折类作文 六年级考场作文 家乡的味道作文开头 观钱塘江大潮作文 夏天的云作文 写给朋友的英语作文 五年级英语作文四季 介绍上海的作文 什么的军训作文