今天爸爸让我帮忙处理下 Excel 文档,本来以为小事一桩,结果才发现没那么容易。他是需要把几十个 Excel 报表合并成三个,本来也没什么,一个个复制好了,但是发现最多的那个需要合并37个文件,天呐,这样手工操作太累了,而且很容易出错。因为它不是简单的拼接,合并后还需要进一步处理。有没有办法可以一次性自动合并所有的文件?

  废话不多说,直接分享方法吧,就是采用 VBA 的方法,屡试不爽!把需要合并成一个文件一张表的所有文件复制到一个目录下,然后在这个目录里新建一个 Excel 文件,打开后右击底部的 Sheet1,查看代码,然后复制以下代码:

sub 合并当前目录下所有工作簿的全部工作表() 
dim mypath, myname, awbname 
dim wb as workbook, wbn as string 
dim g as long 
dim num as long 
dim box as string 
application.screenupdating = false 
mypath = activeworkbook.path 
myname = dir(mypath & "\" & "*.xls") 
awbname = activeworkbook.name 
num = 0 
do while myname <> "" 
if myname <> awbname then 
set wb = workbooks.open(mypath & "\" & myname) 
num = num + 1 
with workbooks(1).activesheet 
.cells(.range("a65536").end(xlup).row + 2, 1) = left(myname, len(myname) - 4) 
for g = 1 to sheets.count 
wb.sheets(g).usedrange.copy .cells(.range("a65536").end(xlup).row + 1, 1) 
next 
wbn = wbn & chr(13) & wb.name 
wb.close false 
end with 
end if 
myname = dir 
loop 
range("a1").select 
application.screenupdating = true 
msgbox "共合并了" & num & "个工作薄下的全部工作表。如下:" & chr(13) & wbn, vbinformation, "提示" 
end sub

Excel 合并

  点击上方的绿色小图标,运行此 VB 代码,根据合并的数量稍等片刻,如下图合并成功:

Excel 合并

  这样一来,省事太多了!我发现被合并的 Excel 如果有多张表,都会被合并进来,并按顺利排列下去。

  合并后还需要进一步处理,比如去除空格,选中其中一列,点击右上角的“查找和选择”,定位条件,选择“空值”,如下图:

Excel 合并

  选中后右击删除行即可。可能还需要去除其它的杂项,选中其中一列,点击右上角的“排序和筛选”,筛选出来后删除行。