如何将多行多列数据转置为单列?(A2-D215共214行4列)
将多行多列数据转置为单列(Excel)
针对你A2:D215区域的214行4列数据,给你三种实用的解决方法:
方法一:公式法(自动同步更新)
在目标列的起始单元格(比如E2)输入以下公式,然后下拉填充直到出现空白值:
=INDEX($A$2:$D$215,INT((ROW()-2)/4)+1,MOD(ROW()-2,4)+1)
公式逻辑:
ROW()-2计算当前单元格相对于起始位置的偏移量INT((ROW()-2)/4)+1定位源数据的行号(每4个单元格对应源数据一行)MOD(ROW()-2,4)+1定位源数据的列号(循环取1-4列)
方法二:Power Query法(可视化操作,适合大量数据)
- 选中A2:D215数据区域
- 点击「数据」选项卡 → 「从表格/区域」(若弹出创建表对话框,根据数据是否有标题选择对应选项)
- 在Power Query编辑器中,选中所有列 → 点击「转换」选项卡 → 「逆透视列」→ 选择「逆透视其他列」
- 删除自动生成的属性列,仅保留值列
- 点击「关闭并上载」,选择数据加载位置即可得到单列数据
方法三:VBA宏法(一次性批量处理)
按Alt+F11打开VBA编辑器,插入模块,粘贴以下代码(记得替换工作表名):
Sub TransposeToSingleColumn() Dim sourceRange As Range Dim targetCell As Range Dim rowNum As Integer, colNum As Integer ' 设置源数据区域和目标起始单元格 Set sourceRange = ThisWorkbook.Sheets("Sheet1").Range("A2:D215") Set targetCell = ThisWorkbook.Sheets("Sheet1").Range("E2") ' 遍历源数据的每一行每一列,写入目标列 For rowNum = 1 To sourceRange.Rows.Count For colNum = 1 To sourceRange.Columns.Count targetCell.Value = sourceRange.Cells(rowNum, colNum).Value Set targetCell = targetCell.Offset(1, 0) Next colNum Next rowNum End Sub
运行宏后,数据会自动转成单列。
内容的提问来源于stack exchange,提问作者gilbert
相关产品推荐
相关产品推荐

