在Power Query中实现多组2列对堆叠为两列的技术求助
问题:将多组列对堆叠为两列表格
我有一个包含多组2列对(如Column2&Column4、Column6&Column8等)的表格,希望将这些列对堆叠成仅含两列的表格,同时保持列对间的对应关系。
预期输出格式
col2 | col4 col6 | col8
原始表格说明
原始表格包含Column2到Column32及Index列(具体数据省略)。
现有M代码
let Source = Excel.Workbook(Paramètre2, null, true), #"ELEC 10 (2)_Sheet" = Source{[Item="ELEC 10 (2)",Kind="Sheet"]}[Data], #"Colonnes supprimées" = Table.RemoveColumns(#"ELEC 10 (2)_Sheet",{"Column40", "Column41", "Column42", "Column43", "Column44", "Column45", "Column46", "Column47", "Column48", "Column49", "Column50", "Column51", "Column52", "Column53", "Column54", "Column55", "Column56", "Column57", "Column58", "Column59", "Column60", "Column61", "Column62", "Column63", "Column5", "Column10", "Column15", "Column20", "Column25", "Column30", "Column35"}), #"Rempli vers le bas" = Table.FillDown(#"Colonnes supprimées",{"Column1", "Column6", "Column11", "Column16", "Column21", "Column26", "Column31", "Column36"}), #"Table transposée" = Table.Transpose(#"Rempli vers le bas"), #"Rempli vers le bas1" = Table.FillDown(#"Table transposée",{"Column1"}), #"Colonnes supprimées1" = Table.RemoveColumns(#"Rempli vers le bas1",{"Column2"}), #"Table transposée1" = Table.Transpose(#"Colonnes supprimées1"), #"Colonnes supprimées2" = Table.RemoveColumns(#"Table transposée1",{"Column1", "Column3", "Column5", "Column7", "Column9", "Column11", "Column13", "Column15", "Column17", "Column19", "Column21", "Column23", "Column25", "Column27", "Column29", "Column31"}), #"Premières lignes supprimées" = Table.Skip(#"Colonnes supprimées2",1), #"Index ajouté" = Table.AddIndexColumn(#"Premières lignes supprimées", "Index", 1, 1, Int64.Type) in #"Index ajouté"
修改方案
在现有代码的let块末尾添加以下步骤,替换原有的in语句:
#"Index supprimé" = Table.RemoveColumns(#"Index ajouté", {"Index"}), #"Colonnes en liste" = Table.ToList(#"Index supprimé", each _), #"Liste divisée par paquets" = List.Split(#"Colonnes en liste", 2), #"Tableau reconstruit" = Table.FromRows(#"Liste divisée par paquets", {"Col1", "Col2"}) in #"Tableau reconstruit"
代码说明
#"Index supprimé":移除之前添加的多余Index列,避免干扰后续处理#"Colonnes en liste":将表格的所有列转换为一维列表,每一行的列对会连续排列#"Liste divisée par paquets":按每2个元素一组拆分列表,对应原来的Column2&Column4、Column6&Column8等列对#"Tableau reconstruit":将拆分后的列表重新构建为两列的表格,你可以把{"Col1", "Col2"}改成需要的列名(比如{"col2", "col4"})
内容的提问来源于stack exchange,提问作者steven
相关产品推荐
相关产品推荐

