Excel如何根据源表指定条件筛选数据创建自动更新的动态表格
Excel动态同步Table2的实现方法
首先提前确认:你已将原数据区域创建为命名为Table1的Excel结构化表(选中区域按Ctrl+T创建后,右键表格-「表格名称」修改为Table1即可),后续Table1新增行也会自动纳入统计范围。
方案1:适用于Excel 365/2021及以上版本(支持动态数组)
操作最简单,无需额外设置即可自动同步:
- 切换到你要放置Table2的工作表,选中要放Table2的首个单元格(如A1)
- 输入公式:
=FILTER(Table1[Value],Table1[ID]=1,"无符合条件的数据") - 按下回车后,所有ID=1对应的Value值会自动向下溢出填充,当你修改Table1的ID列取值、新增/删除Table1行时,溢出区域会自动更新内容、调整行数
- 如果你需要将该区域转为正式的结构化表Table2,只需手动添加表头
Value,选中表头+所有溢出内容,按Ctrl+T创建表格后重命名为Table2即可,表格范围会跟随溢出内容自动调整。
方案2:适用于Excel 2019及更早版本(无动态数组支持)
通过高级筛选+事件宏实现自动同步:
- 提前准备筛选条件区域:找任意空白区域(可以和Table2同工作表),输入两行内容:第一行输入
ID,第二行输入1 - 切换到Table2所在工作表,输入表头
Value,选中表头单元格,点击顶部菜单栏「数据」-「高级」 - 在弹出的高级筛选窗口中做如下设置:
- 动作选择「将筛选结果复制到其他位置」
- 列表区域选择Table1的完整数据范围,可适当选大覆盖未来新增行,如
Sheet1!$A$1:$B$1000 - 条件区域选择你刚才创建的两行一列的ID筛选条件区域
- 复制到选择Table2表头下方的首个单元格(如当前工作表的
$A$2) - 点击确定即可首次生成Table2内容
- 如需实现ID修改后自动同步,可添加VBA事件宏:
- 按
Alt+F11打开VBA编辑器,在左侧工程窗口双击Table1所在的工作表 - 粘贴如下代码,修改对应工作表名和区域地址后保存即可:
Private Sub Worksheet_Change(ByVal Target As Range) ' 仅当ID列内容修改时触发刷新 If Not Intersect(Target, Me.ListObjects("Table1").ListColumns("ID").DataBodyRange) Is Nothing Then ThisWorkbook.Worksheets("Table2所在工作表名称").Range("A:A").ClearContents ' 清空旧的Table2内容 ThisWorkbook.Worksheets("Table1所在工作表名称").Range("Table1[#All]").AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=ThisWorkbook.Worksheets("条件区域所在工作表名称").Range("条件区域地址,如D1:D2"), _ CopyToRange:=ThisWorkbook.Worksheets("Table2所在工作表名称").Range("A1"), _ Unique:=False End If End Sub- 保存文件时选择「Excel 启用宏的工作簿(*.xlsm)」格式即可。
- 按
内容的提问来源于stack exchange,提问作者Kinka-Byo
相关产品推荐
相关产品推荐

