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

Power Query中按年份标记最高/次高Patch版本及获取最近值方法

Power Query 按年份分组保留最高/次高Patch并标记的实现方案

先贴一下你的原始数据:

YearPatchValue
20211.6523.5
20211.6721.3
20211.7025.5
20221.7223.2
20221.7521.5
20221.7924.5
20231.8123
20231.8425.5
20231.8928.5

一步步实现需求

1. 导入数据到Power Query

把你的表格导入Power Query编辑器:点Excel里的「数据」选项卡 → 「自表格/范围」,确认数据无误后进入编辑器。

2. 按年份分组

选中Year列,切换到「转换」选项卡 → 点击「分组依据」,设置如下:

  • 新列名:随便填,比如GroupedData
  • 操作:选「所有行」
  • 列:保持默认的Table就行,点确定。

3. 处理分组内的数据,筛选前两名并标记

接下来要给每个分组的表格排序、取前两行、加标记。点「添加列」→「自定义列」,粘贴下面的M代码:

let
    // 分组内按Patch降序排,把最高版本放最前面
    SortedTable = Table.Sort([GroupedData],{{"Patch", Order.Descending}}),
    // 取前两行(最高和次高Patch)
    Top2Rows = Table.FirstN(SortedTable, 2),
    // 给第一行标new,第二行标old
    AddTag = Table.AddColumn(Top2Rows, "Tag", each if Table.PositionOf(Top2Rows, _) = 0 then "new" else "old")
in
    AddTag

点确定后,你会看到每个分组都变成了带标记的两行数据。

4. 展开分组数据

选中刚生成的自定义列,点列标题右边的小箭头,展开所有列(注意取消勾选GroupedData,避免重复数据),然后删掉多余的分组列,调整下列顺序,最终结果就出来了:

YearPatchValueTag
20211.7025.5new
20211.6721.3old
20221.7924.5new
20221.7521.5old
20231.8928.5new
20231.8425.5old

关于“基于最新Patch获取对应最近值”的问题

完全可以实现,两种简单方法:

  1. 用上面的最终结果,直接筛选Tag = "new"的行,就能得到每年最新Patch对应的Value;
  2. 如果不需要保留次高数据,直接按Year分组取最大Patch的行更高效:
    • 用「分组依据」,设置分组列Year,操作选「最大值」对应Patch列,得到每年的最高Patch;
    • 再通过「合并查询」把这个结果和原始表关联,匹配到对应的Value;
    • 或者直接用自定义分组一步到位,M代码如下:
      Table.Group(源, {"Year"}, {{"LatestData", each Table.First(Table.Sort(_, {{"Patch", Order.Descending}})), type table}})
      
      展开LatestData列就能得到每年最新Patch的完整数据。

内容的提问来源于stack exchange,提问作者AzUser1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:04:59