分组依据 - Excel Power Query 将多行合并为一行

Group by - Excel Power Query multiple rows into one

我将数据加载到 Power Query - 每个员工都有多行,它看起来像这样:

empNum 原因 1 原因 2 原因 3

3453 1 null null

3453 空 1 空

3453 null null 1

如何将数据转换成这样?

empNum 原因 1 原因 2 原因 3

3453 1 1 1

  • 编辑

你也可以这样尝试,所以,步骤如下:

• Select 源的任意单元格,

• 来自 数据选项卡 --> 单击来自 Table/Range在获取和转换组下)

• Select 第一列EmpNum 并右键单击 Unpivot Other Columns,

• 从主页选项卡 --> 在变换组下 --> 单击Group By

GroupBy EmpNum --> 新列名称 -> Group --> 操作 --> All Rows --> 按确定

• 从添加自定义选项卡 --> 在常规组下--> 单击 --> Custom Column

新列名称 --> Reason

自定义列公式 -->

`Table.Column([Group],"Value")`

• 按确定

• 然后通过按 下拉菜单并单击提取值从原因列中提取值

• Select 分隔符 作为您的选择 ( I took comma )

• 提取后转到 主页选项卡 --> Select Split Column by,

By Delimiter -> Delimiter is Comma should be at Each Occurence of the delimiter and press Ok (Also Note in Advanced Options By Default it is Split into Columns)

• 删除不需要的列,然后从 主页选项卡 Close & Load Drop down,从 导入数据 选择 Existing sheetNew Sheet 然后按确定

let
    Source = Excel.CurrentWorkbook(){[Name="Table13"]}[Content],
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"EmpNum"}, "Attribute", "Value"),
    #"Grouped Rows" = Table.Group(#"Unpivoted Other Columns", {"EmpNum"}, {{"Group", each _, type table [EmpNum=number, Attribute=text, Value=number]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Reason", each Table.Column([Group],"Value")),
    #"Extracted Values" = Table.TransformColumns(#"Added Custom", {"Reason", each Text.Combine(List.Transform(_, Text.From), ","), type text}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Reason", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Reason.1", "Reason.2", "Reason.3"}),
    #"Removed Columns" = Table.RemoveColumns(#"Split Column by Delimiter",{"Group"})
in
    #"Removed Columns"

在powerquery中你可以试试

  • 单击 select 第一列
  • 右击 ... 逆透视其他列
  • 单击 select 属性列,转换 ... 透视列,使用值作为值列,高级选项,不聚合
    let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"empNum"}, "Attribute", "Value"),
    #"Pivoted Column" = Table.Pivot(#"Unpivoted Other Columns", List.Distinct(#"Unpivoted Other Columns"[Attribute]), "Attribute", "Value")
    in #"Pivoted Column"