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

如何用Python将Excel同一行多列数据转换为多行?

解决Excel多列标题转成行并关联数据的方法

方法1:用Power Query(推荐,无代码)

这是Excel自带的工具,操作简单且不会破坏原数据:

  • 选中你的数据区域(包含那行多列标题),点击数据选项卡 → 从表格/区域,弹出对话框时勾选“我的表格有标题”(这里的标题指你原数据的第一行多列标题)
  • 进入Power Query编辑器后,选中所有需要转成行的列标题对应列,点击转换选项卡 → 逆透视列 → 逆透视其他列(若仅需转标题列,直接选“逆透视列”)
  • 操作后会生成两列:属性(原列标题)和值(对应数据),可右键重命名为你需要的名称
  • 最后点击主页 → 关闭并上载,就能得到整理好的数据表

方法2:用VBA代码(适合批量重复处理)

按Alt + F11打开VBA编辑器,插入模块后粘贴以下代码:

Sub TransposeColumnsToRows()
    Dim srcSheet As Worksheet, destSheet As Worksheet
    Dim lastCol As Integer, lastRow As Integer, i As Integer, j As Integer, k As Integer
    
    Set srcSheet = ActiveSheet
    Set destSheet = ThisWorkbook.Sheets.Add
    destSheet.Range("A1").Value = "列名"
    destSheet.Range("B1").Value = "对应数据"
    
    lastCol = srcSheet.Cells(1, Columns.Count).End(xlToLeft).Column
    lastRow = srcSheet.Cells(Rows.Count, 1).End(xlUp).Row
    k = 2
    
    For i = 2 To lastRow '从第二行开始遍历数据行
        For j = 1 To lastCol '遍历所有列标题
            destSheet.Cells(k, 1).Value = srcSheet.Cells(1, j).Value
            destSheet.Cells(k, 2).Value = srcSheet.Cells(i, j).Value
            k = k + 1
        Next j
    Next i
End Sub
  • 返回Excel,按Alt + F8运行宏,会自动生成新工作表,里面就是转好的数据
  • 注意:运行前确认原数据第一行是列标题,第二行及以下是数据行

补充说明

如果原数据有固定保留列(比如每行的唯一ID),在Power Query中只需选中要转的标题列,不要选固定列,再执行逆透视操作即可,固定列会保留在每行数据中。

内容的提问来源于stack exchange,提问作者Scorsei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:00:24