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

Power Query添加条件列:判断C列值是否为该列最大值

在Power Query中添加判断列是否为最大值的条件列

你遇到的问题其实是对Power Query里Table.Max函数的返回值类型没搞清楚——它返回的是包含最大值的整行记录,不是单个数值,所以没法直接用来做条件判断。别担心,我给你两种简单的解决办法,完全贴合你的需求:

方法一:直接用M语言编写完整逻辑

这是最直接的方式,先提取C列的单个最大值,再添加自定义列实现判断:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"A", Int64.Type}, {"B", type datetime}, {"C", Int64.Type}, {"D", Int64.Type}}),
    // 关键步骤:从最大值记录中提取C列的单个数值
    MaxC = Table.Max(#"Changed Type", "C")[C],
    // 添加自定义列E,实现你的条件逻辑
    #"Added Custom Column" = Table.AddColumn(#"Changed Type", "E", each if [C] = MaxC then [C] else -1)
in
    #"Added Custom Column"

逻辑解释:

  • Table.Max(#"Changed Type", "C")会返回C列值最大的那一行完整记录,后面加[C]就能从记录中提取出单个的最大值,这样就可以用来做逐行对比了。
  • Table.AddColumn里的判断逻辑完全对应你给出的Excel公式IF(MAX(C:C)=C2,C2,-1),只是用Power Query的语法实现。

方法二:用Power Query可视化界面操作(少写代码)

如果更习惯用UI操作,按以下步骤来:

  1. 加载Table1到Power Query编辑器,完成类型转换(即你之前的Changed Type步骤)。
  2. 点击添加列选项卡 → 自定义列,输入公式=Table.Max(#"Changed Type", "C")[C],将列命名为MaxC(这列所有行都会显示C列的最大值)。
  3. 再点击添加列 → 条件列,设置规则:
    • 列名:选择C
    • 运算符:等于
    • 值:选择MaxC
    • 输出:输入[C]
    • 否则:输入-1
    • 给条件列命名为E
  4. 右键删掉MaxC辅助列,就能得到最终结果。

这两种方法都能实现你VBA宏的逻辑,而且Power Query的优势在于:数据源更新后,只需刷新就能自动同步E列的结果,不用手动运行宏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:14:32