如何在Excel中将行数据转换为列(附数据示例)
Excel行转列拆分实现方法
原始数据
Row1 2 6 7
Row 2 20 5 8
Row 3 10
Row 4 45 46
期望效果
Row1 2
6
7
Row2. 20
5
8
Row3. 10
Row4. 45
46
下面给你三种实用的实现方法:
方法一:Power Query批量处理(推荐)
- 选中所有原始数据区域,点击菜单栏「数据」→「从表格/区域」,弹出对话框时如果数据没有表头就取消「我的表格有标题」的勾选,确认进入Power Query编辑器。
- 选中除第一列(行标题列)外的所有列,点击「转换」→「逆透视列」→「逆透视其他列」,此时数据会变成两列:行标题列和数值列,每个数值对应一行行标题。
- 调整格式让每组第一行显示「行标题+数值」,其余行只显示数值:
- 选中行标题列,点击「开始」→「分组依据」,分组列选行标题列,新列名设为「分组行」,操作选「所有行」,点击确定。
- 点击「分组行」列右侧的展开按钮,选择「Value」并勾选「使用原始列名作为前缀」,展开后得到「分组行.Value」列。
- 添加自定义列:点击「添加列」→「自定义列」,输入公式
= if [分组行.Position] = 0 then [Column1] & " " & Text.From([分组行.Value]) else Text.From([分组行.Value]),点击确定。 - 删除多余的列(Column1、分组行.Value、分组行.Position),只保留自定义列。
- 点击「关闭并上载」,结果会自动放到新工作表中。
方法二:公式+手动调整(适合少量数据)
假设原始数据在A1:D4区域(A列是行标题,B-D是数值):
- 在E列生成对应每个数值的行标题:E1输入
=INDEX($A$1:$A$4,ROUNDUP(ROW()/3,0)),下拉填充到E12(因最多3个数值/行,4行共12行)。 - 在F列提取所有数值:F1输入
=INDEX($B$1:$D$4,ROUNDUP(ROW()/3,0),MOD(ROW()-1,3)+1),下拉填充到F12,删除F列为空的行。 - 在G列生成最终格式:G1输入
=E1&" "&F1,G2输入=IF(E2=E1,F2,E2&" "&F2),下拉填充即可得到期望效果。
方法三:VBA一键处理(适合重复操作)
- 按
Alt+F11打开VBA编辑器,右键点击左侧项目窗口→「插入」→「模块」。 - 粘贴以下代码:
Sub ConvertRowsToTargetFormat() Dim srcArea As Range, destStart As Range Dim rowItem As Range, cellItem As Range Dim currentRow As Long Set srcArea = Application.InputBox("选择要处理的数据区域", Type:=8) Set destStart = Application.InputBox("选择结果存放的起始单元格", Type:=8) currentRow = 0 For Each rowItem In srcArea.Rows Dim isFirstVal As Boolean isFirstVal = True For Each cellItem In rowItem.Cells If cellItem.Value <> "" Then currentRow = currentRow + 1 If isFirstVal Then destStart.Offset(currentRow - 1, 0).Value = rowItem.Cells(1).Value & " " & cellItem.Value isFirstVal = False Else destStart.Offset(currentRow - 1, 0).Value = cellItem.Value End If End If Next cellItem Next rowItem End Sub
- 按F5运行代码,按提示选择原始数据区域和结果起始单元格,即可一键生成目标格式。
内容的提问来源于stack exchange,提问作者user16290409
相关产品推荐
相关产品推荐

