如何将Excel中每三行数据合并为一行多列数据
Excel 三行合并为一行多列的解决方法
方法一:公式批量生成
假设原始数据存放在Sheet1的A列,在新工作表的A1单元格输入:=INDEX(Sheet1!$A:$A,ROW()*3-2)
B1单元格输入:=INDEX(Sheet1!$A:$A,ROW()*3-1)
C1单元格输入:=INDEX(Sheet1!$A:$A,ROW()*3)
选中A1:C1下拉填充,就能把每连续三行的数据合并到同一行的三列中。
如果原始数据有多列,把公式里的$A:$A替换成对应列即可(比如B列用$B:$B)。
方法二:Power Query 快速转换(推荐)
- 选中原始数据区域,点击数据→从表格/区域(勾选“我的表格有标题”)。
- 在Power Query编辑器中,点击添加列→索引列→从0开始。
- 添加自定义列,输入公式:
=Number.IntegerDivide([索引],3),命名为分组ID。 - 点击转换→分组依据,分组列选
分组ID,新列名设为合并行,操作选所有行。 - 再次添加自定义列,输入:
=Table.FromRows({List.Combine([合并行])})。 - 展开自定义列的所有字段,删除多余的索引、分组ID列,最后点击关闭并上载,结果自动生成。
方法三:VBA 宏脚本
按Alt+F11打开VBA编辑器,插入模块,粘贴以下代码:
Sub MergeThreeRows() Dim wsSource As Worksheet, wsTarget As Worksheet Dim lastRow As Long, i As Long, targetRow As Long Set wsSource = ThisWorkbook.Sheets("Sheet1") ' 替换成你的原始数据工作表名 Set wsTarget = ThisWorkbook.Sheets.Add ' 新建工作表存结果 targetRow = 1 lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row For i = 1 To lastRow Step 3 ' 以下为A列数据合并,多列的话复制格式修改列号 wsTarget.Cells(targetRow, 1) = wsSource.Cells(i, 1) wsTarget.Cells(targetRow, 2) = wsSource.Cells(i + 1, 1) wsTarget.Cells(targetRow, 3) = wsSource.Cells(i + 2, 1) targetRow = targetRow + 1 Next i End Sub
修改代码中的工作表名和列数匹配你的数据,运行宏即可完成合并。
内容的提问来源于stack exchange,提问作者user46956
相关产品推荐
相关产品推荐

