利用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