excel将多个工作表数据内容合并到一个工作表
方法一
- 01
利用VBA将数据区域不定的多个工作表数据快速合并到一个工作表。 分别有工作表1、2、3数据区域,如下图所示:
- 02
按ALT+F11打开VBE编辑器,在工程窗口下的Microsoft Excel对象右键-插入-模块,新建一个模块1。
- 03
输入如下代码: Option Explicit Sub hbgzb() Dim sh As Worksheet, flag As Boolean, i As Integer, hrow As Integer, hrowc As Integer flag = False For i = 1 To Sheets.Count If Sheets(i).Name = "合并数据" Then flag = True Next If flag = False Then Set sh = Worksheets.Add sh.Name = "合并数据" Sheets("合并数据").Move after:=Sheets(Sheets.Count) End If 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 End Sub
- 04
按ALT+F8打开宏对话框窗口,鼠标单击执行hbgzb宏。
- 05
实现如图所示效果:
- 06
说明:本段VBA代码由于将编辑过的区域作为源数据区域,顾无论该数据源有无数据,只要曾经编辑过皆做为源数据源,做拷贝处理。
方法二
- 01
适用于工作表数量不多,数据量不大的情况。 如下图所示,我们可以发现,各个地区的工作表模板都是一致的。
- 02
可以通过在汇总表中使用【=工作表!单元格】获取数据,并通过向右、向下填充数据行。
- 03
当一个工作表数据填充完成后,往下的数据行值为0,此时,切换第二个工作表继续进行填充,直至填充完毕。
- 04
结果如下图所示:
方法三
- 01
适用于工作表数量多,数据量大的情况。 新建名称DQ,引用位置输入公式【=RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))】,用于提取多个工作表名称。
- 02
在汇总表中增加辅助列,输入公式【=INDEX(DQ,INT((ROW(A2)-1)/10)+1)】,往下填充,每个工作表名称被引用10行。 注意:被引用行按需调整,如每个工作表名称需生成50行,调整公式中的10,改为50即可。
- 03
填充第一行数据,输入公式【=INDIRECT($A2&"!"&ADDRESS(COUNTIF($A$2:$A2,$A2)+1,COLUMN(A2)))】往右填充,完成第一行的填充。 说明:通过ADDRESS函数,定位到第二行第一列,即A2单元格;整个公式的意思是引用工作表【广州】中的A2单元格,值为“广州”。
- 04
往下填充,当一个工作表数据填充完成后,往下的数据行值为0,批量删除值为0的行即可。