Excel Power Query中如何保留旧数据列并新增更新后的日期列?
实现方案:Power Query保留历史列并追加新列
1. 初始化历史数据存储
第一次操作时,直接将链接文件的完整数据(包含初始日期列,比如Jan 13)加载到Excel的**「历史数据」工作表**,作为后续合并的基础库。
2. 编写Power Query合并逻辑
新建空白查询,按以下步骤配置:
步骤1:提取最新数据的固定列与新日期列
从链接文件中读取数据,仅保留固定标识列(如项目ID、名称)和最新的日期列:
let // 替换为你的链接文件路径 Source = Excel.Workbook(File.Contents("C:\团队共享更新文件.xlsx"), null, true), // 替换为你的数据所在工作表名称 DataSheet = Source{[Item="项目数据", Kind="Sheet"]}[Data], AllColumns = Table.ColumnNames(DataSheet), // 替换为你的固定标识列名(确保每行唯一) FixedColumns = {"项目ID", "项目名称"}, // 获取最新的日期列(即最后一列) NewDateColumn = List.Last(AllColumns), // 筛选出需要的列 NewData = Table.SelectColumns(DataSheet, FixedColumns & {NewDateColumn}) in NewData
步骤2:合并新数据与历史数据
加载「历史数据」表,将新日期列合并到历史数据中,保留所有旧列:
let // 调用上面的"新数据"查询 NewData = 新数据, NewColName = List.Last(Table.ColumnNames(NewData)), // 读取历史数据表 HistoricalData = Excel.CurrentWorkbook(){[Name="历史数据"]}[Content], // 按固定标识列匹配合并,保留历史所有列 MergedTable = Table.NestedJoin(HistoricalData, {"项目ID", "项目名称"}, NewData, {"项目ID", "项目名称"}, "NewData", JoinKind.LeftOuter), // 展开新的日期列 ExpandedTable = Table.ExpandTableColumn(MergedTable, "NewData", {NewColName}, {NewColName}) in ExpandedTable
步骤3:设置数据上载规则
将合并后的查询关闭并上载至「历史数据」工作表,选择「覆盖现有数据」。此后每次刷新,Power Query会自动读取新日期列并追加到历史表中。
3. 日常刷新操作
团队更新链接文件后,点击Excel「数据」选项卡的**「全部刷新」**,「历史数据」表会自动保留所有旧日期列的数据,同时新增最新的日期列及对应数据。
注意事项
- 固定标识列(如项目ID)必须唯一且稳定,否则合并时会出现数据匹配错误。
- 若链接文件的固定列名称或位置变更,需同步修改Power Query中的
FixedColumns定义。
内容的提问来源于stack exchange,提问作者navr99
相关产品推荐
相关产品推荐

