如何快速将Excel中不同长度的垂直表格转换为水平表格?
快速将Table1转换为Table2的高效方法
数据示例
原始Table1

目标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
相关产品推荐
相关产品推荐

