You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:50:28