【问题标题】:Convert 2 columns of data in excel power query to one header row with multiple columns将excel power query中的2列数据转换为一个包含多列的标题行
【发布时间】:2018-08-19 12:24:20
【问题描述】:

我试图弄清楚如何在 Excel Power Query 中将 2 列数据更改为一个包含多列的标题行。据我了解,与使用大量的 vlookup 或数据透视表相比,Query 使 Excel 文件的大小保持较小,并且在流程上较少。如果这是一个更好的选择,我对 VBA 持开放态度。

例如,我有一个包含名称列表的 A 列。然后,B 列有另一个名称列表,其中包含多个相同名称的实例。 A 列中的名称是分配给 B 中个人报告的个人。

我正在尝试创建一个查询(或 VBA,如果更好的话),其中 B 中的名称成为行标题,而 A 中的名称属于每个标题中相应的人。

我希望这是有道理的。提前感谢您的帮助!

这是一个屏幕截图,展示了我正在使用的内容以及我想要获得的最终结果:

【问题讨论】:

  • 我可能会使用 VBA 并将数据存储在字典中。或循环B列,将A列值分配给匹配列中适当的下一个空闲行(由列标题或固定列引用匹配)。

标签: vba excel powerquery


【解决方案1】:

您可以使用 Power Query:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    ListEmployees = Table.Group(Source, {"Supervisor Name"}, {{"Employees", each Text.Combine([Employee Name],","), type text}}),
    CountEmployees = Table.AddColumn(ListEmployees, "Count", each List.Count(Text.Split([Employees],","))),
    SplitEmployees = Table.SplitColumn(ListEmployees, "Employees", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv),List.Max(CountEmployees[Count])),
    Transpose = Table.Transpose(SplitEmployees),
    PromoteHeaders = Table.PromoteHeaders(Transpose, [PromoteAllScalars=true])
in
    PromoteHeaders

确保您的源数据结构为表格(列表对象)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多