标题解释:我有一个txt文件,我把它读入excel,创建一个查询来编辑它。我的txt文件是shop.txt,包含以下内容(* 1):
| 材料编号|商店|裤子|大小|裤子颜色|可用金额|性别问题|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 小行星621077453|目标|加大码|黑色|二十个|男性||
| 小行星621077453|乐购|加大码|黑色|十二|男性||
| 小行星623989211|目标|S型|黑色|二十二|男性||
| 小行星63013|利德尔|L型|黑色|二十一|女性||
| 小行星678048334|目标|男|红色|三十三|女性||
| 小行星678048334|乐购|男|红色|十五|女性||
| 小行星680603975|目标|S型|白色|三十|女性||
| 小行星680603975|乐购|S型|白色|二十个|女性||
| 小行星680603975|利德尔|S型|白色|三十三|女性||
| 小行星6888|目标|超高速|蓝色|三十二|男性||
| 小行星6888|利德尔|超高速|蓝色|十五|男性||
然后,我从range("A:F")创建查询,删除空值,并创建其透视版本:
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Material nr.", Int64.Type}, {"Shop", type text}, {"Trouser Size", type text}, {"Trouser Color", type text}, {"Available amount", Int64.Type}, {"Gender", type text}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([#"Material nr."] <> null)),
#"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"[Shop]), "Shop", "Material nr.", List.Sum),
#"Reordered Columns" = Table.ReorderColumns(#"Pivoted Column",{"Target", "Tesco", "Lidl", "Trouser Size", "Trouser Color", "Available amount", "Gender"})
in
#"Reordered Columns"
它把我带到了this
我需要尽可能多的列许多不同的商店可用。但渔获物是:我需要每种材料只列出一次,并且每一个额外的数据(大小、颜色......)都应该与透视表的名称一起出现。手动命名它根本不是问题。如果我用我知道的唯一方法来命名,那么材料的额外数据就会被删除(所以我最后只剩下|材料编号|以及|商店|一起工作)。
我要查找的表类似于this.
这是可以实现的吗?我觉得这太混乱了。我几乎可以肯定在VBS中创建目标表是可能的,但是我正在尝试使用Power Query做得更好。
先谢谢你!
1条答案
按热度按时间nxowjjhe1#
在Powerquery中试试这段代码。你取消透视,合并两列,然后透视回来。当其中有数据时,性别会显示为一列。
请注意,如果您愿意,也可以直接读入文本文件,而无需先将数据加载到excel表中