You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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"

代码说明

  1. #"Index supprimé":移除之前添加的多余Index列,避免干扰后续处理
  2. #"Colonnes en liste":将表格的所有列转换为一维列表,每一行的列对会连续排列
  3. #"Liste divisée par paquets":按每2个元素一组拆分列表,对应原来的Column2&Column4、Column6&Column8等列对
  4. #"Tableau reconstruit":将拆分后的列表重新构建为两列的表格,你可以把{"Col1", "Col2"}改成需要的列名(比如{"col2", "col4"})

内容的提问来源于stack exchange,提问作者steven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:32:03