使用另一列的逻辑合并一列中的单元格内容

使用另一列的逻辑合并一列中的单元格内容

我想使用来自另一列的逻辑来合并并列出一列的单元格内容 请参阅下面的详细信息

数据集

Name             Sales order number

Harry1           1234
Dave2            1235
Mary3            1234
Bill4            1234
Tom5             1235

该公式将查看销售订单号,收集所有具有相同销售订单号的名称,并将这些名称显示在名为“销售方”的单个列中

结果

  Name            Sales Order Number            Sold by

Harry1            1234                          Harry1, Mary3, Bill4
Dave2             1235                          Dave2, Tom5
Mary3             1234                          Harry1, Mary3, Bill4
Bill4             1234                          Harry1, Mary3, Bill4
Tom5              1235                          Dave2, Tom5

这样做似乎不合逻辑,但我有一个庞大的数据集,然后使用“结果”进行数据透视

通过执行一个简单的 IF 语句,我将名字拉入销售者列,但似乎无法弄清楚如何汇总具有相同销售订单的所有名称并将其列在列中

答案1

您可以使用免费的 MicrosoftPower Query插件。
它不是 VBA,但在这种情况下,除了使用 UI 之外,还有一些编码步骤。

数据集 -> Power Query 的数据输出 表“数据集”-> Power Query 的数据输出

  1. 将数据集定义为表(在下面的脚本中我称之为“数据集”)
  2. 在功能区 Power Query 上,在 UI 中导入表(“从表”)
  3. 将下面的脚本放入高级编辑器(功能区视图->高级编辑器)

这是 M 代码:

let
    Source = Excel.CurrentWorkbook(){[Name="Dataset"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Sales order number", Int64.Type}}),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type",{"Sales order number"},#"Changed Type",{"Sales order number"},"NewColumn",JoinKind.LeftOuter),

    // Function for Merging the matching rows
    List_MatchingRows=(Table, Column) =>
        let 
            ColumnToMerge = Table.SelectColumns(Table, Column),
            ListMatch = Table.ToList(ColumnToMerge),
            SingleLine = Text.TrimEnd(Text.TrimEnd(Lines.ToText(ListMatch, ", ")," "),",")
        in
            SingleLine,


    #"Added Custom" = Table.AddColumn(#"Merged Queries", "Sold by", each List_MatchingRows([NewColumn],"Name")),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"NewColumn"})

in
    #"Removed Columns"

相关内容