【问题标题】:How to convert multi column excel table to single column with header attached如何将多列excel表格转换为附有标题的单列
【发布时间】:2020-11-06 07:09:36
【问题描述】:

您好,谁能告诉我是否有一种在 Excel 中将表 1 转换为表 2 的好方法?这只是一个示例,实际数据有数千行。

谢谢!

【问题讨论】:

标签: excel excel-formula


【解决方案1】:

如果您有 Excel O365,您可以选择:

E1中的公式:

=SORT(TRANSPOSE(CHOOSE({1,2},TRANSPOSE(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,A2:C4&"</s><s>"&A1:C1)&"</s></t>","//s[position() mod 2 = 1]")),TRANSPOSE(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,A2:C4&"</s><s>"&A1:C1)&"</s></t>","//s[position() mod 2 = 0]")))),1,1)

【讨论】:

    【解决方案2】:

    您可以使用 Excel 2010+ 中提供的 Power Query

    它是 Excel 2016+ 的一部分,在早期版本中作为 Microsoft 提供的免费插件提供。

    • Data / Get &amp; Transform / From Table/Range
    • 如果 ABC 不是 Headers,则(在 Power Query UI 中)
      • Home / Transform / Use First Row as Headers
    • 选择所有列并
      • Transform / Any Column / Unpivot Columns
    • AttributeValue的顺序排序
    • Value 列移动到第一列位置
    • Home / Close / Close &amp; Load

    以上所有步骤都可以在 Power Query UI 中完成,但这里是生成的 M-Code

    M 码

    let
        Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
        #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
        #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"A", Int64.Type}, {"B", Int64.Type}, {"C", Int64.Type}}),
        #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {}, "Attribute", "Value"),
        #"Sorted Rows" = Table.Sort(#"Unpivoted Columns",{{"Attribute", Order.Ascending}, {"Value", Order.Ascending}}),
        #"Reordered Columns" = Table.ReorderColumns(#"Sorted Rows",{"Value", "Attribute"})
    in
        #"Reordered Columns"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 2018-05-26
      • 2022-07-24
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多