Excel Power Query:重命名已关联数据透视表的查询
解决Power Query查询重命名不破坏关联数据透视表/图表的方案
方案1:用“别名查询”过渡(最安全,推荐)
- 别直接改原查询的名字,先在Power Query编辑器里新建一个空查询,命名成你想要的(比如
ACS_Poverty) - 打开新查询的高级编辑器,输入代码
= 原查询名(比如= ACS_Poverty_County_1YR),这个新查询就会完全同步原查询的所有数据和更新 - 把所有数据透视表、图表的数据源,全部切换到这个新查询对应的Excel表
- 确认所有关联都正常工作后,再删掉原来的旧查询(删之前务必挨个检查一遍,别漏了关联对象)
方案2:修改名称后批量修复关联
如果已经改了名字导致关联断裂,按下面的步骤批量救回:
- 按
Ctrl+F3打开名称管理器,找到所有和旧查询同名的表,把它们的引用位置改成新查询对应的表 - 处理数据透视表:
- 数量少的话,选中透视表,在「分析」选项卡点「更改数据源」,选新表就行
- 数量多就用VBA批量处理,复制下面的代码到VBA编辑器运行(记得把
ACS_Poverty换成你的新表名):Sub UpdateAllPivots() Dim pt As PivotTable Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets For Each pt In ws.PivotTables pt.ChangePivotCache ThisWorkbook.PivotCaches.Create( _ SourceType:=xlDatabase, SourceData:="ACS_Poverty") Next pt Next ws End Sub
- 处理图表:
- 单个处理的话,选中图表,在「设计」选项卡点「选择数据」,修改数据源为新表的范围
- 批量处理用这段VBA(替换掉代码里的工作表名和新表名):
Sub UpdateAllCharts() Dim chrtObj As ChartObject Dim ws As Worksheet Dim targetSheet As Worksheet Set targetSheet = ThisWorkbook.Worksheets("你的表所在工作表名") '替换成实际工作表名 For Each ws In ThisWorkbook.Worksheets For Each chrtObj In ws.ChartObjects chrtObj.Chart.SetSourceData Source:=targetSheet.Range("ACS_Poverty[#All]") '替换成新表名 Next chrtObj Next ws End Sub
方案3:Power Query内置修复工具
- 改完查询名后,回到Power Query编辑器,点「主页」选项卡的「修复链接」,系统会自动修复查询之间的引用关系
- 回到Excel界面,打开名称管理器检查所有表的引用是否正确,手动修正异常项
- 最后再逐个或用VBA批量更新数据透视表和图表的数据源
内容的提问来源于stack exchange,提问作者Jamie Vergano
相关产品推荐
相关产品推荐

