【问题标题】:Table.TransformColumns based on a partial Header基于部分 Header 的 Table.TransformColumns
【发布时间】:2019-02-06 09:03:25
【问题描述】:

我有一个表,其中每个客户端都有一个 DATA 列和一个 RETURN 列,每个值都需要除以一个值。因为我不知道当我每个月得到源工作簿时会有多少客户在源工作簿上,所以我唯一的常量是 DATA (m) 和 RETURN 标头。

我正在尝试划分标题中标题中包含“DATA (m)”的每一列。因为原始标题是客户端名称,所以我已经转置了表格,交换了列并重新转置了数据以切换 2 行左右。然后我将“DATA(m)”和“RETURN”提升到标题 - 因为每个客户端有 1 个;添加后缀以避免重复的标题。 我只需要一种方法来根据每个标题的前缀完成转换列。

#"DATADivide" = Table.TransformColumns (#"Transposed Table1", {{"DATA (m)", each _ / 1000, type number}})

对于出现在标题中的每个实例,我希望“DATA (m)”列中的值除以 1000(并且可以复制相同的代码以在 Return 上工作)。

非常感谢提前

【问题讨论】:

    标签: excel powerquery


    【解决方案1】:

    这会将列名包含“Data (”的所有列除以 1000

    let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    ColumnList = List.Select(Table.ColumnNames(Source), each Text.Contains(_, "Data (")),,
    Divide= Table.TransformColumns(Source, List.Transform(ColumnList, each {_, (inner) => inner / 1000, type number}))
    in Divide
    

    【讨论】:

    • 嗨-谢谢你的回复,你能更详细地解释一下你的步骤吗?我的目标是修改标题以“数据(m)”开头的所有列,而不必对每个列执行转换(因为可能会从原始文档中添加/删除更多列)。也许我错过了一些对逻辑的理解......
    • 第 2 步 = 获取以“Data (” 开头的所有列名作为列表第 3 步 - 通过在一个步骤中除以 1000 来转换该列表中的所有列
    • 太棒了 - 就像做梦一样!感谢您的帮助和澄清。
    猜你喜欢
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2021-12-14
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2018-10-10
    相关资源
    最近更新 更多