PowerQuery - 在计算中使用列的位置而不是列名

Posted

技术标签:

【中文标题】PowerQuery - 在计算中使用列的位置而不是列名【英文标题】:PowerQuery - use position of column instead of column name in calculation 【发布时间】:2021-07-13 17:30:08 【问题描述】:

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

目前的代码是: = Table.AddColumn(Source, "Maximum", each List.Max([#"1-6-2021"], [#"1-5-2021"], [#"1-4-2021"] ), 类型号)

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

如何将这些列名替换为职位?

非常感谢您的帮助!

【问题讨论】:

建议:添加代码围栏以突出代码并使其更具可读性。 【参考方案1】:

您可以调整您想要的列 # 的 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

【讨论】:

以上是关于PowerQuery - 在计算中使用列的位置而不是列名的主要内容,如果未能解决你的问题,请参考以下文章

数据可视化之PowerQuery篇PowerQuery技巧:批量合并Excel表的指定列

PowerQuery:组合在“元表”中配置的表

在 Power Query 中拆分列而不转换为文本?

如何减去 Power Query 数据透视表中的两列?

如何利用PowerQuery合并文件下的文件

数据可视化之PowerQuery篇利用PowerQuery,进行更加灵活的数据分列