我在 Excel 中有一个如下所示的数据集:
顾客 | 数量 | 城市 |
---|---|---|
约翰 | 4 | 城市B |
帕特里克 | 3 | 城市A |
还有一堆其他专栏。
我正在寻找一种方法来实现这一点:
顾客 | 数量 | 城市 |
---|---|---|
约翰 | 4 | 城市B |
约翰 | 4 | 城市B |
约翰 | 4 | 城市B |
约翰 | 4 | 城市B |
帕特里克 | 3 | 城市A |
帕特里克 | 3 | 城市A |
帕特里克 | 3 | 城市A |
因此,从本质上讲,为每个金额值获取一条记录。这是一次性导入操作,因此不必是动态的或其他任何操作。
答案1
这可以使用 Windows Excel 2010+ 和 Microsoft 365(Windows 或 Mac)中提供的 Power Query 来实现
使用 Power Query
- 在数据表中选择一些单元格
Data => Get&Transform => from Table/Range
- 当 PQ 编辑器打开时:
Home => Advanced Editor
- 记下表格姓名在第 2 行
- 将下面的 M 代码粘贴到您所看到的位置
- 将第 2 行的表名改回最初生成的表名。
- 阅读评论并探索
Applied Steps
以了解算法
let
//Change next lines to reflect actual data source and columns
Source = Excel.CurrentWorkbook(){[Name="Table11"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Customer", type text},
{"Amount", Int64.Type}, {"City", type text}}),
#"Repeat Rows" =
Table.FromRecords(
List.Combine(
List.Accumulate(
{0..Table.RowCount(#"Changed Type")-1},
{},
(state, current)=>
state &
{List.Repeat(
{#"Changed Type"{current}},
Record.Field(#"Changed Type"{current},"Amount"))
})
))
in
#"Repeat Rows"