Power Query表中如何提取每行最大值对应的列名
可以实现,通过Power Query自定义列的M函数组合就能满足需求,操作和代码如下:
操作步骤
- 进入Power Query编辑器,选中目标数据表
- 点击顶部菜单栏「添加列」→「自定义列」
- 新列名设置为
Max_in,在公式框输入下方代码后点击确定即可
自定义列代码
let // 配置需要参与最大值判断的数值列,可按需修改 ValueCols = {"Value1", "Value2", "Values3"}, // 计算当前行的最大值 RowMax = List.Max(Record.ToList(Record.SelectFields(_, ValueCols))), // 匹配所有值等于最大值的列名,用分号拼接 MaxCols = Text.Combine(List.Select(ValueCols, (col)=> Record.Field(_, col) = RowMax), ";") in MaxCols
补充说明
- 如果需要动态适配表中的数值列(不需要手动写列名),可以把
ValueCols的定义替换为:ValueCols = List.RemoveItems(Table.ColumnNames(_), {"ID"}),即可自动排除ID列,将其余所有列纳入判断范围,后续新增数值列不需要修改公式 - 如果需要优先返回第一个最大值列而不返回所有,只需要在
Text.Combine前套一层List.First()即可,代码改为MaxCols = List.First(List.Select(ValueCols, (col)=> Record.Field(_, col) = RowMax))
内容的提问来源于stack exchange,提问作者gastan
相关产品推荐
相关产品推荐

