如何合并多个工作簿里的Excel文件

更多Excel技巧干货,请关注微信公众号: Excel实用技巧分享


image.png

工作中,多个工作簿的数据合并至一个工作簿中是比较麻烦的,使用复制粘贴太耗费时间,还容易出错。
目前有三种方法:
一.如果文件都是csv形式的文件,可以使用使用bat代码法,这种方法仅限于csv文件。
方法:首先将要合并的csv文件统一放入到一个文件夹下,然后再新建一个文本文档,在里边写入代码 copy *.csv merge.csv,然后保存txt文件,然后将txt文件的后缀.txt修改为.bat 。过程如下图:


GIF1.gif

代码中的merge.csv 是合并后的文件名称。后缀修改完成后,双击运行.bat文件,文件夹内的文件就会被合并到一个csv文件中。


1583753163(1).jpg

这种方法仅适用于csv文件。

第二种方法:使用VBA代码完成自动合并。

步骤:首先将需要合并的excel文件放入到同一个文件夹下,如下图:


image.png

然后,新建一个excel文件,如下图:


GIF2.gif

然后打开刚刚新建的excel文件,按下【Alt + F11】组合键,调出VBE编辑器,右键编辑器左侧空白区域,新建一个模块,如下图:


GIF3.gif

然后将下面的代码复制粘贴进去,按【F5】键执行宏程序。

Sub merge_workbook()

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

ActiveWorkbook. Activesheet.UsedRange.clearcontents

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 & "个工作薄下全部工作表。"

End Sub

过程如下图:


GIF4.gif

然后将汇总的数据复制到一个新的表格就行了。

另外,这个含有VBA代码的文件,可以另存为.xlsm类型的文件,以后有类似的工作,都可以使用这个宏文件来处理了。

过程如下图:


GIF5.gif

更进一步的,我们可以插入一个按钮,来绑定这个程序,以后只需要点击这个按钮就可以来执行这个程序了,过程如下图:


GIF6.gif

插入按钮在【开发工具】栏里边,


image.png

没有这个选项卡的同学,可以在选项里边添加,过程如下图:


GIF7.gif

然后在【开发工具】选项卡里边点击【插入】,选择第一个按钮,并在合适的位置插入按钮。

第三种方法:使用Excel的高级功能,PQ

首先,打开一个新的excel文件,选择【数据】选项卡,如下图:


image.png

按照【数据】-【获取数据】-【自文件】-【从文件夹】的顺序点击,选中存放数据的文件夹,加载编辑在弹出的PQ查询器中,添加列,自定义列,输入公式:Excel.Workbook([Content],true)在弹出的自定义列中进行筛选,只选择data继续筛选,这次所有的列都进行保留在菜单中,关闭并上载至Excel表格,删除不需要的数据区域即可,
过程如下图:


GIF8.gif

GIF9.gif

今天的内容就到这里了,赶快动手试试把~~~


image.png

你可能感兴趣的:(如何合并多个工作簿里的Excel文件)