操作步骤:
1、原始数据所在工作簿包含多个格式相同的工作表,只不过每个工作表内容不同,比如说不同人名的工作表数据或者不同部门填写的数据。
2、在原始数据同目录下新建一个工作簿,建立两个工作表,名称分别为“首页”和“合并汇总表”。
![](https://ask-fd.zol-img.com.cn/g5/M00/00/09/ChMkJlopnJSIFWi-AADaB9FhzigAAi8-APddcYAANof599.jpg)
3、按Alt+F11进入VBA代码编辑和调试界面。
![](https://ask-fd.zol-img.com.cn/g5/M00/00/09/ChMkJ1opnJSINGz5AACU3Q_LV8kAAi8-APeowUAAJT1491.jpg)
4、根据下图提示,插入一个模块。
![](https://ask-fd.zol-img.com.cn/g5/M00/00/09/ChMkJlopnJWIVN9AAAChsDV2DKgAAi8-APfj2wAAKHI625.jpg)
5、将下述代码粘贴到模块空白处:
Sub CombineSheetsCells()Dim wsNewWorksheet As WorksheetDim cel As RangeDim DataSource, RowTitle, ColumnTitle, SourceDataRows, SourceDataColumns As VariantDim TitleRow, TitleColumn As RangeDim Num As IntegerDim DataRows As LongDataRows = 1Dim TitleArr()Dim ChoiceDim MyName$, MyFileName$, ActiveSheetName$, AddressAll$, AddressRow$, AddressColumn$, FileDir$, DataSheet$, myDelimiter$Dim n, in = 1i = 1Application.DisplayAlerts = FalseWorksheets("合并汇总表").DeleteSet wsNewWorksheet = Worksheets.Add(, after:=Worksheets(Worksheets.Count))wsNewWorksheet.Name = "合并汇总表"MyFileName = Application.GetOpenFilename("Excel工作薄 (*.xls*),*.xls*")If MyFileName = "False" ThenMsgBox "没有选择文件!请重新选择一个被合并文件!", vbInformation, "取消"ElseWorkbooks.Open Filename:=MyFileNameNum = ActiveWorkbook.Sheets.CountMyName = ActiveWorkbook.NameSet DataSource = Application.InputBox(prompt:="请选择要合并的数据区域:", Type:=8)AddressAll = DataSource.AddressActiveWorkbook.ActiveSheet.Range(AddressAll).SelectSourceDataRows = Selection.Rows.CountSourceDataColumns = Selection.Columns.CountApplication.ScreenUpdating = FalseApplication.EnableEvents = FalseFor i = 1 To NumActiveWorkbook.Sheets(i).ActivateActiveWorkbook.Sheets(i).Range(AddressAll).SelectSelection.CopyActiveSheetName = ActiveWorkbook.ActiveSheet.NameWorkbooks(ThisWorkbook.Name).ActivateActiveWorkbook.Sheets("合并汇总表").SelectActiveWorkbook.Sheets("合并汇总表").Range("A" & DataRows).Value = ActiveSheetNameActiveWorkbook.Sheets("合并汇总表").Range(Cells(DataRows, 2), Cells(DataRows, 2)).SelectSelection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _SkipBlanks:=False, Transpose:=FalseSelection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=FalseSelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=FalseDataRows = DataRows + SourceDataRowsWorkbooks(MyName).ActivateNext iApplication.ScreenUpdating = TrueApplication.EnableEvents = TrueEnd IfWorkbooks(MyName).CloseEnd Sub
6、在“首页”工作表中按下图示范插入一个窗体控件并指定宏为插入的代码名称。
7、点击“首页”工作表中插入的按钮,根据提示,浏览到原始数据工作簿。
![](https://ask-fd.zol-img.com.cn/g5/M00/00/09/ChMkJlopnJWITzyRAACLOkNIh8AAAi8-APgl68AAItS763.jpg)
8、下一步,用鼠标选择要合并的数据范围。
注意:每个工作表数据可能不一样,比如说有的是10行数据,有的是30行数据。在这里我们可以用鼠标选择任意工作表的一个较大范围,比如说A1:D100,保证比最多行数的工作表数据还多就可以,一会再删除空行。
![](https://ask-fd.zol-img.com.cn/g5/M00/00/09/ChMkJ1opnJWId9WcAADnYsWZ-AEAAi8-APhW6UAAOd6655.jpg)
9、点击确定按钮,待代码运行完毕后,所有的数据就都合并到了“合并汇总表”中。
注意:
1)A列的文本说明右侧的数据来自于原始数据表的哪个工作表;
2)数据之间会有一些空行,下面通过筛选删除。
![](https://ask-fd.zol-img.com.cn/g5/M00/00/09/ChMkJlopnJaIeqGMAAETTsE_nSEAAi8-APisBwAARNm260.jpg)
10、选中全部数据区域,执行自动筛选。然后选择其中一个字段,选择“空白”和标题内容。
![](https://ask-fd.zol-img.com.cn/g5/M00/00/09/ChMkJlopnJaIEClBAADI51Ky33sAAi8-APkH4kAAMj_506.jpg)
11、然后将筛选出来的无用行鼠标右键删除,再删除A列整列即可,完成效果如下图: