Excel多表合并一定要用VBA代码吗?

sunnynie

工作中有时候需要将多张工作表汇总到一张工作表,这个问题在我的Excel书《Excel高手捷径:一招鲜,吃遍天》中第118招和119招介绍了用VBA代码实现。本文另辟蹊径用函数和公式瞬间实现多表合并。

例如:有N多个以月份命名的excel工作表(为演示方便以6个为例,如图1),每张表字段名相同(图2),现需要把表格全部合并到一个表中去。

工作表名:

1.png
图 1

每张表字段名:

2.png
图 2

操作步骤如下:

Step1:在汇总表输入字段名,A2单元格手工输入第一张工作表名称1月,点击单元格右下角+往下拖动到A7,如图3:

3.png
图 3

Step2:在B2单元格输入公式=INDIRECT($A2&"!"&ADDRESS(INT(ROW(A1)1)/6+2,COLUMN(A1))),向右拖动公式,再向下拖动公式,得到图4。

4.png
图 4

公式说明:

$A2是工作表名称所在列(本例是A列),

/6中数字6为要合并的工作表实际个数。

INT((ROW(A1)-1)/6)+2:目的是生成2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4序列,

ADDRESS():动态生成引用的单元格地址。

indirect函数功能是返回并显示指定引用的内容,可引用其他工作簿的名称、工作表名称和单元格引用。在之前的制作二级联动菜单也用到这个函数。

Excel中怎样实现二级联动下拉菜单?

Step3:复制A:D列区域(如果有100张表就选取A2:D101),然后选取下面的空行粘贴即可完成全部数据提取。

如果工作表名称没规律怎么办?可以用宏表函数GET.WORKBOOK提取,我的Excel书中第117招介绍了用宏表函数提取工作表名称。