提问人:XmalevolentX 提问时间:11/7/2022 最后编辑:Mayukh BhattacharyaXmalevolentX 更新时间:11/7/2022 访问量:868
转置和重复多列和多行
Transpose & Repeat multiple columns & rows
问:
我有以下数据,我正在尝试复制和转置,但我在这样做时遇到了问题。 转置似乎并没有让我到达那里。
专栏A | 列B | 专栏C | 列D | E 列 | 列。。BM公司 |
---|---|---|---|---|---|
水果一 | 水果二 | 水果三 | 2000 | 2001 | ...2022 |
苹果 | 香蕉 | 葡萄 | RandomValueOne | RandomValueTwo (随机值二) | ...RandomValueN |
但我希望数据看起来像以下内容。
专栏A | 列B | 专栏C | 列D | E 列 |
---|---|---|---|---|
水果一 | 水果二 | 水果三 | 年 | 价值 |
苹果 | 香蕉 | 葡萄 | 2000 | RandomValueOne |
苹果 | 香蕉 | 葡萄 | 2001 | RandomValueTwo (随机值二) |
苹果 | 香蕉 | 葡萄 | ...2022 | ...RandomValueN |
感谢您在这方面的任何帮助。我无法访问 R、MatLab、SPSS 或类似的东西。希望在excel中实现这一目标。
谢谢。
答:
0赞
Mayukh Bhattacharya
11/7/2022
#1
以下是您可以使用 Power Query 执行的操作:
若要使用 Power Query 完成此任务,请按照以下步骤操作:
• 在数据表中选择一些单元格,
• 数据选项卡 => Get&Transform => 来自表/范围,
• 当 PQ 编辑器打开时:Home => 高级编辑器,
• 记下 2 个表的名称,
• 粘贴以下内容以代替您看到的内容。M Code
• 并参考注释
let
//Source Data Table1
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
//Changed The Data Type
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ColumnA", type text}, {"ColumnB", type text}, {"ColumnC", type text}, {"ColumnD", type any}, {"ColumnE", type any}, {"Column..BM", type text}}),
//Promoted Headers, this you can exclude. Since I copied from StackOverflow, the Columns A To BM were copied
#"Promoted Headers" = Table.PromoteHeaders(#"Changed Type", [PromoteAllScalars=true]),
//Unpivoted Columns
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Promoted Headers", {"FruitOne", "FruitTwo", "FruitThree"}, "Attribute", "Value"),
//Renamed the Attribute Column as Year
#"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",{{"Attribute", "Year"}})
in
#"Renamed Columns"
•将其导入回Excel,按Home = > Close => Close & Load To,导入时,您可以选择带有要放置表格的单元格引用的现有工作表,或者您可以简单地单击NewSheet
请参阅右侧的查询设置面板,您可以从中更改输出的表名,以及步骤;
最终输出
编辑
@MayukhBhattacharya我在 Mac 上运行 excel,而不是 PC。显然地 Power Query尚未在Mac上完全发布。
使用公式
• 细胞中使用的配方A6
=INDEX($A$2:$C$3,INT((ROW(A1)-1)/COLUMNS($D$2:$F$3))+1,COLUMN($A$2:$C$3))
并向下填充。
• 细胞中使用的配方D6
=INDEX($D$1:$F$1,MOD(ROW(A1)-1,3)+1)
并向下填充。
• 细胞中使用的配方E6
=INDEX($D$2:$F$3,MATCH(1,(A6=$A$2:$A$3)*(B6=$B$2:$B$3)*(C6=$C$2:$C$3),0),MATCH(D6,$D$1:$F$1,0))
评论
Power Query
Unpivot Other Columns
Answers