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

如何用VBA循环处理列表并将多行分组数据转换为列格式?

批量转换6行组数据为列格式的VBA宏

需求说明

原始数据按6行一组排列,每组结构示例:

row1: aaa
row2: bbb
row3: ccc
row4: ddd
row5: eee
row6: fff

需转换为仅保留一次表头的列格式:

row1: row2: row3: row4: row5: row6:
aaa bbb ccc ddd eee fff
11 22 33 44 55 66

VBA实现代码

Sub ConvertRowsToColumns()
    Dim srcSheet As Worksheet
    Dim destSheet As Worksheet
    Dim lastRow As Long
    Dim groupCount As Long
    Dim i As Long, j As Long
    Dim destRow As Integer
    
    ' 指定源表和目标表,可根据实际修改表名
    Set srcSheet = ThisWorkbook.Sheets("Sheet1")
    Set destSheet = ThisWorkbook.Sheets("Sheet2")
    
    ' 获取源数据最后一行,计算总组数
    lastRow = srcSheet.Cells(srcSheet.Rows.Count, "A").End(xlUp).Row
    groupCount = lastRow \ 6
    
    ' 写入唯一表头(从第一组提取)
    For j = 1 To 6
        destSheet.Cells(1, j).Value = Split(srcSheet.Cells(j, "A").Value, " ")(0)
    Next j
    
    destRow = 2
    ' 循环处理每组数据,转成列格式
    For i = 0 To groupCount - 1
        For j = 1 To 6
            destSheet.Cells(destRow, j).Value = Split(srcSheet.Cells(i * 6 + j, "A").Value, " ")(1)
        Next j
        destRow = destRow + 1
    Next i
    
    ' 自动调整列宽优化显示
    destSheet.Columns.AutoFit
End Sub

代码说明

  1. 工作表配置:修改Sheet1和Sheet2为你实际使用的源数据工作表和结果输出工作表名称。
  2. 数据计算:自动识别源数据的有效范围,根据每组6行的规则计算总组数。
  3. 表头处理:仅从第一组提取rowX:作为表头,避免重复。
  4. 数据转换:按组遍历源数据,将每组的6行内容对应写入目标表的同一行,完成行转列的格式转换。
  5. 格式优化:自动调整列宽,让输出内容更整齐易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:07:18