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

如何将多行多列数据转置为单列?(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法(可视化操作,适合大量数据)

  1. 选中A2:D215数据区域
  2. 点击「数据」选项卡 → 「从表格/区域」(若弹出创建表对话框,根据数据是否有标题选择对应选项)
  3. 在Power Query编辑器中,选中所有列 → 点击「转换」选项卡 → 「逆透视列」→ 选择「逆透视其他列」
  4. 删除自动生成的属性列,仅保留值列
  5. 点击「关闭并上载」,选择数据加载位置即可得到单列数据

方法三: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:57:17