Power Query中如何区分列内两个最大值并为其中一个加1
用Power Query(M代码)处理双最大值的调整方案
假设你的数据源表叫表1,目标列名为数值,可以通过以下步骤实现只给其中一个最大值加1:
- 先给表添加索引列,用唯一的索引值区分每一行,这样就能精准定位到你想修改的那个最大值行
- 计算出目标列的最大值
- 筛选出所有最大值所在行的索引,选择第一个或者最后一个(按需调整)
- 新建列,判断当前行是否是你标记的目标最大值行,是则加1,其余保持原值
完整M代码示例
let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], // 添加索引列(从0开始计数) 添加索引 = Table.AddIndexColumn(源, "索引", 0, 1, Int64.Type), // 获取数值列的最大值 最大值 = List.Max(添加索引[数值]), // 取第一个最大值所在的索引,要改最后一个就把List.First换成List.Last 目标索引 = List.First(List.PositionOf(添加索引[数值], 最大值, Occurrence.All)), // 生成调整后的新列 添加新列 = Table.AddColumn(添加索引, "调整后数值", each if [索引] = 目标索引 then [数值] + 1 else [数值]), // 可选:移除临时用的索引列 移除索引 = Table.RemoveColumns(添加新列,{"索引"}) in 移除索引
关键说明
- 如果想修改最后一个最大值,只需把代码里的
List.First替换成List.Last即可 - 索引列是临时用来区分行的,最后可以选择移除不影响结果
- 这个方法也适用于多个最大值的场景,只要调整
目标索引的取值逻辑(比如取第N个最大值,用List.Range之类的函数)
内容的提问来源于stack exchange,提问作者DullesTower
相关产品推荐
相关产品推荐

