Excel如何将多个工作表的表格合并为可自动更新的主表
多工作表动态合并表格实现方法
分三种适配不同版本的方案,按需选择即可:
方案1:VSTACK函数(Excel 365/2021、WPS 2021及以上版本适用)
这是最简单的无代码方案:
- 先把Sheet1、Sheet2的数据源转为结构化表:选中对应表的所有数据(含表头),按
Ctrl+T,勾选「表包含标题」后确认,两个表都按同样操作设置。 - 打开Sheet3,在A1单元格输入公式:
=VSTACK(Table1,Table2)(如果改了结构化表的名称,把Table1、Table2替换成你自己的表名即可) - 按下回车后公式会自动溢出所有合并内容,后续你在Sheet1、Sheet2的结构化表里新增行时,结构化表会自动扩容,Sheet3的汇总内容会实时同步更新。
如果不想用结构化表,也可以直接用整列引用的公式,效果一致:=VSTACK(Sheet1!A1,FILTER(Sheet1!A2:A,Sheet1!A2:A<>""),FILTER(Sheet2!A2:A,Sheet2!A2:A<>""))
方案2:Power Query(Excel 2016及以上、所有WPS版本适用)
没有VSTACK函数的话选这个方案,不需要写代码:
- 选中Sheet1的数据源,点击「数据」选项卡-「从表格/区域」,勾选「我的表格有标题」,进入Power Query编辑器后直接关闭上载,将该查询命名为
Sheet1数据源 - 按同样的操作把Sheet2的数据也导入Power Query,命名为
Sheet2数据源 - 在Power Query编辑器里点击「主页」-「追加查询」,选择将两个查询合并为新查询
- 点击「关闭并上载」,选择上载到Sheet3的A1单元格即可
后续需要更新时右键点击Sheet3的汇总表,选择「刷新」即可同步,也可以设置自动刷新:右键汇总表-「表格」-「外部数据属性」,勾选「打开文件时刷新数据」。
方案3:VBA宏(全版本适用,支持实时自动更新)
需要完全无感知的实时更新的话用这个方案:
- 按
Alt+F11打开VBA编辑器,双击左侧项目栏里的ThisWorkbook - 粘贴如下代码:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.Name = "Sheet1" Or Sh.Name = "Sheet2" Then Dim ws3 As Worksheet Set ws3 = ThisWorkbook.Worksheets("Sheet3") ws3.Cells.Clear ' 复制Sheet1全部内容 ThisWorkbook.Worksheets("Sheet1").UsedRange.Copy ws3.Range("A1") ' 复制Sheet2内容(跳过表头避免重复) Dim lastRow As Long lastRow = ws3.Cells(ws3.Rows.Count, "A").End(xlUp).Row + 1 ThisWorkbook.Worksheets("Sheet2").UsedRange.Offset(1, 0).Copy ws3.Range("A" & lastRow) End If End Sub
- 关闭编辑器,将文件保存为
.xlsm(启用宏的工作簿)格式即可,后续修改Sheet1或Sheet2的内容时,Sheet3会自动同步更新。
内容的提问来源于stack exchange,提问作者CheckThis
相关产品推荐
相关产品推荐

