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

如何在Excel Power Query中按SF ID列计算各值的运行计数

在Excel Power Query里给SF ID做运行计数的方法

你要的就是每个SF ID每出现一次就递加1的逐行计数对吧?Power Query里确实没有直接的COUNTIF函数,普通分组也只能算出每个ID的总数量,达不到逐行累计的效果,按下面的步骤来就能搞定:

具体操作步骤

  • 先把数据按需要的顺序排好:运行计数是跟着行顺序走的,所以先确保数据是你想要的顺序(比如原始录入顺序,或者按日期排序)。选中SF ID列,点「开始」里的排序按钮就行;要是想严格保留原始顺序,最好先加个索引列记行号——点「添加列」→「索引列」选从1开始就行。
  • 分组后生成逐行计数:
    1. 选中SF ID列,点「转换」→「分组依据」。
    2. 分组窗口里设置:分组依据选SF ID,新列名随便起(比如叫“组内数据”),操作选「所有行」,点确定。这时候会生成一列装着每个ID对应的所有行的列表。
    3. 点这个新列标题旁的展开按钮,把原来的所有列都选上展开。
    4. 加自定义计数列:点「添加列」→「自定义列」,输入公式:
      List.PositionOf([组内数据][SF ID], [SF ID]) + 1
      
      这个公式的作用是,在当前ID对应的所有行列表里,找到当前行的位置,加1就是该ID第几次出现。
  • 收尾清理:把刚才的“组内数据”临时列删掉,把新生成的计数列重命名成你想要的名字(比如“运行计数”)。

嫌点鼠标麻烦?直接用M代码

打开高级编辑器,把现有代码替换成下面的(记得把表1改成你实际的表名):

let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    // 先加索引列保留原始顺序
    加索引 = Table.AddIndexColumn(源, "原始行号", 1, 1),
    // 按SF ID分组,给每个组的行加递增计数
    分组加计数 = Table.Group(加索引, {"SF ID"}, {{"组数据", each Table.AddIndexColumn(_, "运行计数", 1, 1), type table}}),
    // 展开所有列
    展开列 = Table.ExpandTableColumn(分组加计数, "组数据", Table.ColumnNames(加索引) & {"运行计数"}),
    // 按原始行号排序回去
    恢复顺序 = Table.Sort(展开列,{{"原始行号", Order.Ascending}}),
    // 删掉临时的原始行号列
    清理列 = Table.RemoveColumns(恢复顺序,{"原始行号"})
in
    清理列

这样出来的结果就是每个SF ID第一次出现算1,第二次算2,以此类推的运行计数,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:15:28