更多Excel技巧干货,请关注微信公众号: Excel实用技巧分享
工作中,多个工作簿的数据合并至一个工作簿中是比较麻烦的,使用复制粘贴太耗费时间,还容易出错。
目前有三种方法:
一.如果文件都是csv形式的文件,可以使用使用bat代码法,这种方法仅限于csv文件。
方法:首先将要合并的csv文件统一放入到一个文件夹下,然后再新建一个文本文档,在里边写入代码 copy *.csv merge.csv,然后保存txt文件,然后将txt文件的后缀.txt修改为.bat 。过程如下图:
代码中的merge.csv 是合并后的文件名称。后缀修改完成后,双击运行.bat文件,文件夹内的文件就会被合并到一个csv文件中。
这种方法仅适用于csv文件。
第二种方法:使用VBA代码完成自动合并。
步骤:首先将需要合并的excel文件放入到同一个文件夹下,如下图:
然后,新建一个excel文件,如下图:
然后打开刚刚新建的excel文件,按下【Alt + F11】组合键,调出VBE编辑器,右键编辑器左侧空白区域,新建一个模块,如下图:
然后将下面的代码复制粘贴进去,按【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
过程如下图:
然后将汇总的数据复制到一个新的表格就行了。
另外,这个含有VBA代码的文件,可以另存为.xlsm类型的文件,以后有类似的工作,都可以使用这个宏文件来处理了。
过程如下图:
更进一步的,我们可以插入一个按钮,来绑定这个程序,以后只需要点击这个按钮就可以来执行这个程序了,过程如下图:
插入按钮在【开发工具】栏里边,
没有这个选项卡的同学,可以在选项里边添加,过程如下图:
然后在【开发工具】选项卡里边点击【插入】,选择第一个按钮,并在合适的位置插入按钮。
第三种方法:使用Excel的高级功能,PQ
首先,打开一个新的excel文件,选择【数据】选项卡,如下图:
按照【数据】-【获取数据】-【自文件】-【从文件夹】的顺序点击,选中存放数据的文件夹,加载编辑在弹出的PQ查询器中,添加列,自定义列,输入公式:Excel.Workbook([Content],true)在弹出的自定义列中进行筛选,只选择data继续筛选,这次所有的列都进行保留在菜单中,关闭并上载至Excel表格,删除不需要的数据区域即可,
过程如下图:
今天的内容就到这里了,赶快动手试试把~~~