利用vb的强大功能实现excel文件的拆分、合并。使用的使用只要通过该excel宏文件,只要打开需要合并、拆分的excel文件,就可自行完成合并、拆分工作。不需要为每个excel文件写语句,工作中简便、实用。
本文介绍使用VBA功能来完成多表合并工作,要求需合并的表结构相同。这种合并办法适用于一次合并或无需随时更新合并表时使用。如果需要合并的表经常修改,修改的结果要在合并表中及时更新,可以使用excel query实现。
一.如当我们需要将excel文件中的多个子表全部汇总时, 点击 “将多个工作表汇总到一个表”命令。
在打开 文件对话框,我们选好需要汇总的excel文件,文件格式xls,xlsx格式,点击确定。
如上表,该文件中有三个工作表:
出现提示对话框,点击“打开”后继续,如果发现已存在“合并数据”表,需删除该表。
开始合并数据,完成后出现提示框。
合并后的数据就放置在 打开Exce文件中“合并数据”表中。
二.相关vb语句如下
Sub hbgzb()
'将多个工作表汇合到一个表里
'打开文件
Dim nm, sht As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
nm = Application.GetOpenFilename("Excel 文件 ,*.xls*;*.xlsx")
If nm = False Then MsgBox "未选择文件!": Exit Sub
Workbooks.Open (nm)
Dim sh As Worksheet
Dim flag As Boolean
Dim i, icount As Integer
Dim hrow As Integer, hrowc As Integer
flag = False
For i = 1 To Sheets.Count
If Sheets(i).Name = "合并数据" Then
flag = True
MsgBox " 合并数据 表,已存在,请检查,如需合并表,请改名或删除该表", vbInformation, "提示"
Exit Sub
End If
Next
If flag = False Then
Set sh = Worksheets.Add
sh.Name = "合并数据"
Sheets("合并数据").Move after:=Sheets(Sheets.Count)
End If
icount = Sheets.Count
For i = 1 To Sheets.Count
If Sheets(i).Name <> "合并数据" Then
hrow = Sheets("合并数据").UsedRange.Row
hrowc = Sheets("合并数据").UsedRange.Rows.Count
If hrowc = 1 Then
Sheets(i).UsedRange.Copy Sheets("合并数据").Cells(hrow, 1).End(xlUp)
Else
Sheets(i).UsedRange.Copy Sheets("合并数据").Cells(hrow + hrowc - 1, 1).Offset(1, 0)
End If
End If
Next i
MsgBox "共合并了" & icount & "个工作薄下的全部工作表。见 合并数据 表", vbInformation, "提示"
End Sub
三.利用开发工具涉及相关按钮,将按钮和对应的vb程序关联就可以了。
Private Sub CommandButton2_Click()
hbgzb
'合并当前目录下所有工作簿的全部工作
End Sub