如何用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
相关产品推荐
相关产品推荐

