首页 > 解决方案 > PowerQuery - 在计算中使用列的位置而不是列名

问题描述

PowerQuery 和 M-Code 的新功能。我添加了一个计算列以获得最大值。我想使用列的位置编号,而不是使用硬编码的列名。

当前代码为: = Table.AddColumn(Source, "Maximum", each List.Max({[#"1-6-2021"], [#"1-5-2021"], [#"1-4 -2021"]}),型号)

我希望它不是 [#"1-6-2021"],而是第 3 列;对于 [#"1-5-2021"] 第 4 列等。

如何用职位替换这些列名?

非常感谢您的帮助!

标签: powerquery

解决方案


您可以调整您想要的列 # 的 {x} 部分

0 是第一列,所以这是 2/3/4 列的最大值

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
x=  Table.AddColumn(Source, "Maximum", each List.Max({
    Record.Field(_,Table.ColumnNames(Source){1}),
    Record.Field(_,Table.ColumnNames(Source){2}),
    Record.Field(_,Table.ColumnNames(Source){3})
}), type number)
in x

如果您需要在一堆列上执行 Max,例如,下面将对除前两列之外的所有列执行此操作,前两列已被第二行删除

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
colToSum = List.RemoveFirstN(Table.ColumnNames(Source),2),
AddIndex = Table.AddIndexColumn(Source,"Index",0,1),
GetMax = Table.AddColumn(AddIndex, "Custom", each List.Max( Record.ToList( Table.SelectColumns(AddIndex,colToSum){[Index]}) ))
in GetMax

推荐阅读