如何在Excel中批量转置15行×6列数据为3行×30列格式?
高效处理Excel数据转置(15行×6列转3行×30列)
方法1:公式组合快速生成
假设原始数据起始于A1:F15,目标区域从H1开始:
- 第一行(H1)输入公式:
=INDEX($A$1:$F$15,INT((COLUMN(A1)-1)/6)+1,MOD(COLUMN(A1)-1,6)+1) - 第二行(H2)输入公式:
=INDEX($A$1:$F$15,INT((COLUMN(A1)-1)/6)+6,MOD(COLUMN(A1)-1,6)+1) - 第三行(H3)输入公式:
=INDEX($A$1:$F$15,INT((COLUMN(A1)-1)/6)+11,MOD(COLUMN(A1)-1,6)+1)
将每行公式向右拖拽至AF列,即可得到3行×30列的结果。换案例时只需修改公式里的原始数据范围。
方法2:Power Query批量自动化
- 选中原始数据区域,点击「数据」→「从表格/区域」(按需勾选「我的表格有标题」)
- 在Power Query编辑器中,选中所有列,点击「转换」→「逆透视列」→「逆透视其他列」
- 添加自定义列,输入公式:
=INT((List.PositionOf(Table.ColumnNames(源),[属性])-1)/6)+1,用于分组原始列 - 按自定义列分组,将「值」列合并为列表,再转置成列
- 关闭并上载到新工作表,后续换案例只需替换数据源刷新即可,适合批量处理100个案例。
方法3:VBA宏一键完成
按Alt+F11打开VBA编辑器,插入模块后粘贴以下代码:
Sub Transpose15x6To3x30() Dim srcRng As Range, destRng As Range Dim i As Integer, j As Integer, group As Integer Set srcRng = Application.InputBox("选择15行×6列的原始数据区域", Type:=8) Set destRng = Application.InputBox("选择目标区域的起始单元格", Type:=8) ' 分3组,每组5行原始数据转成10列目标数据 For group = 0 To 2 For j = 0 To 4 For i = 1 To 6 destRng.Offset(group, j * 6 + i - 1).Value = srcRng.Offset(group * 5 + j, i - 1).Value Next i Next j Next group End Sub
运行宏,依次选择原始数据和目标起始单元格,一键完成转置。可将宏保存到个人宏工作簿,所有Excel文件都能调用。
内容的提问来源于stack exchange,提问作者Wong Hong Fu
相关产品推荐
相关产品推荐

