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

如何快速将Excel中不同长度的垂直表格转换为水平表格?

快速将Table1转换为Table2的高效方法

数据示例

原始Table1

Table1

目标Table2

Table2

几种实用快捷方案

1. Excel Power Query(零代码推荐)

  • 选中Table1的数据区域,点击「数据」选项卡 → 「从表格/区域」(Excel 2016及以上版本支持)
  • 在Power Query编辑器中,选中第一列以外的所有列,点击「转换」→「逆透视列」→「逆透视其他列」
  • 此时数据会变为行标签、属性(原列名)、值三列,选中后两列,点击「转换」→「透视列」,值列选择「值」,聚合方式选「不要聚合」
  • 调整列顺序后,点击「关闭并上载」,直接生成Table2格式的数据

2. 动态数组公式(Excel 365/2021适用)

假设Table1数据在A1:F4区域:

  • 提取唯一行标签:=UNIQUE(A2:A4)
  • 转置列标签:=TRANSPOSE(B1:F1)
  • 匹配对应值:在目标区域第一个单元格(如H2)输入公式 =XLOOKUP(H$1,$B$1:$F$1,XLOOKUP($G2,$A$2:$A$4,$B$2:$F$4)),然后向右向下拖动填充柄完成

3. VBA宏(批量重复处理场景)

按下Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:

Sub ConvertTableFormat()
    Dim srcSheet As Worksheet, destSheet As Worksheet
    Dim lastRow As Long, lastCol As Long
    Dim i As Long, j As Long
    
    Set srcSheet = ThisWorkbook.Sheets("Sheet1") '替换为你的原始数据工作表名称
    Set destSheet = ThisWorkbook.Sheets.Add(After:=srcSheet)
    destSheet.Name = "ConvertedResult"
    
    lastRow = srcSheet.Cells(srcSheet.Rows.Count, "A").End(xlUp).Row
    lastCol = srcSheet.Cells(1, srcSheet.Columns.Count).End(xlToLeft).Column
    
    '复制行标签
    srcSheet.Range("A2:A" & lastRow).Copy destSheet.Range("A2")
    '转置复制列标签
    srcSheet.Range(srcSheet.Cells(1, 2), srcSheet.Cells(1, lastCol)).Copy
    destSheet.Range("B1").PasteSpecial Transpose:=True
    
    '填充对应数据
    For i = 2 To lastRow
        For j = 2 To lastCol
            destSheet.Cells(i, j).Value = srcSheet.Cells(i, j).Value
        Next j
    Next i
    
    Application.CutCopyMode = False
End Sub

修改代码中的工作表名称后运行宏,即可自动生成目标格式数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:06:10