如何实现Excel工作表联动:主表新增/删除数据时副表自动同步
Excel主表与副表自动同步(含新增/删除数据)
方案1:Power Query(无代码,推荐)
这个方法能自动同步新增、删除的数据,支持自动刷新,不需要写代码:
- 把Sheet1的数据转为Excel表格:选中Sheet1所有数据(含表头),按
Ctrl+T,勾选「我的表格有标题」后确定。 - 创建Power Query连接:点击「数据」选项卡 →「从表格/区域」,打开Power Query编辑器后直接点「关闭并上载至」,选择「仅创建连接」后确定。
- 在目标工作表导入数据:回到目标表,点击「数据」→「现有连接」,选中刚才的连接点「打开」,在「导入数据」弹窗里选「表」,指定起始单元格(比如A1),勾选「刷新数据时覆盖现有单元格」后确定。
- 设置自动刷新:右键目标表的表格 →「表格」→「刷新」,点击「刷新所有」旁的下拉箭头→「连接属性」,勾选「打开文件时刷新数据」,还可以设置定时刷新间隔(比如1分钟)。
方案2:VBA宏(实时同步)
需要启用宏,能实现主表数据变化时立刻同步:
- 按
Alt+F11打开VBA编辑器。 - 左侧「工程资源管理器」双击Sheet1,打开其代码窗口。
- 粘贴以下代码(注意修改目标工作表名称,比如把
Sheet2改成你的副表名):
Private Sub Worksheet_Change(ByVal Target As Range) Dim targetSheet As Worksheet Set targetSheet = ThisWorkbook.Sheets("Sheet2") ' 修改为你的目标工作表 ' 清空副表原有数据(保留表头) targetSheet.Range("A2:" & targetSheet.Cells(targetSheet.Rows.Count, "C").End(xlUp).Address).ClearContents ' 复制主表数据到副表 ThisWorkbook.Sheets("Sheet1").Range("A1:" & ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "C").End(xlUp).Address).Copy _ Destination:=targetSheet.Range("A1") End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call Worksheet_Change(Target) ' 处理删除行后未触发Change事件的情况 End Sub
- 保存工作簿为「启用宏的工作簿(.xlsm)」格式。此后主表新增、删除、修改数据,副表会实时同步。
方案3:动态数组公式(适用于Excel 365/2021)
适合新版本Excel,操作最简单,但会显示空行:
- 在目标表A1输入和主表一致的表头。
- A2单元格输入公式
=Sheet1!A:A,按Enter后自动溢出所有数据;同理B2输入=Sheet1!B:B,C2输入=Sheet1!C:C。 - 缺点:主表删除行后,目标表对应行变为空值,不会自动删除行。
内容的提问来源于stack exchange,提问作者sumeet kumar
相关产品推荐
相关产品推荐

