将一笔交易拆分为多笔交易

将一笔交易拆分为多笔交易

所以我有一张这样的表,我想将其拆分成具有相同 ID 的每个项目的单独交易。本质上,我们将有 3 行,其中订单 ID 为 1,但一行包含钢笔,一行包含铅笔,一行包含尺子。其余的类似。

订单编号 类别 数量
1 钢笔、铅笔、尺子 1,2,3
2 尺子、橡皮 3,2
3 指南针、钢笔、橡皮擦 4,1,2
4 钢笔铅笔 1,2

这就是我想要的表格的样子(我只会做前几行)

订单编号 类别 数量
1 1
1 铅笔 2
1 统治者 3

我设法通过一种方式做到这一点,首先使用带有分隔符的文本到列来分隔类别和金额位。然后从这里我使用转置复制和粘贴数据,并移动数据以获得我想要的表格。

我想知道是否有更简单、更快捷、更好的方法来做到这一点,因为这对于大型数据集来说并不理想。

谢谢。

答案1

您可以使用 Windows Excel 2010+ 和 Excel 365(Windows 或 Mac)中的 Power Query 来实现此目的

使用 Power Query

  • 在数据表中选择一些单元格
  • Data => Get&Transform => from Table/Range或者from within sheet
  • 当 PQ 编辑器打开时:Home => Advanced Editor
  • 记下表格姓名在第 2 行
  • 将下面的 M 代码粘贴到您所看到的位置
  • 将第 2 行的表名改回最初生成的表名。
  • 阅读评论并探索Applied Steps以了解算法
let

//Change next line to reflect your actual data source
    Source = Excel.CurrentWorkbook(){[Name="Table24"]}[Content],

//set the data types
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Order ID", Int64.Type}, {"Category", type text}, {"Amount", type text}}),

//Add custom column where the contents of the Category and Amount column are combined into a single list
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each List.Zip({Text.Split([Category],","), Text.Split([Amount],",")})),

//Remove the original category and amount columns
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Category", "Amount"}),

//Expand the list column into rows (each one will have a list corresponding to a single pair of Category/Amount
    #"Expanded Custom" = Table.ExpandListColumn(#"Removed Columns", "Custom"),

//Create a two-element comma-separated text string from each list
    #"Extracted Values" = Table.TransformColumns(#"Expanded Custom", {"Custom", 
        each Text.Combine(List.Transform(_, Text.From), ","), type text}),

//Split the text string, by the comma, into two rows
    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Custom", 
        Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Category", "Amount"}),

//set the data types
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Category", type text}, {"Amount", Int64.Type}})
in
    #"Changed Type1"

在此处输入图片描述

相关内容