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

Excel VBA实现将工作表行值按6行增量复制到另一工作表

VBA代码错误排查与修正方案

原代码错误原因

  • 嵌套循环逻辑错误:两层For循环会导致每个源行重复覆盖目标表2~50行的所有单元格,最终仅最后一个源行的内容会保留,完全不符合逐行对应、间隔6行的需求
  • 未实现目标行增量为6的规则,原逻辑中目标行是逐行+1,和要求的每次加6完全不符
  • 存在冗余逻辑:开头已经手动复制了源表13行到目标表2行,后续循环又从源行13开始处理,会重复操作第一行数据

修正后的完整代码

Sub CopyData2()
    Dim wb As Workbook
    Set wb = ThisWorkbook
    Dim srcws As Worksheet
    Set srcws = wb.Worksheets("Equipment details")
    Dim destws As Worksheet
    Set destws = wb.Worksheets("Worksheet (2)")
    Dim SrcRowNo As Long
    Dim DestRowNo As Long
    
    ' 源表起始行
    SrcRowNo = 13
    ' 目标表起始行
    DestRowNo = 2
    
    ' 循环处理源表13行到1000行
    Do While SrcRowNo <= 1000
        ' 若需要跳过源表空行,可取消下一行注释
        ' If srcws.Cells(SrcRowNo, 1) <> "" Then
        srcws.Cells(SrcRowNo, 1).Copy Destination:=destws.Cells(DestRowNo, 1)
        ' 源行+1取下一条数据
        SrcRowNo = SrcRowNo + 1
        ' 目标行+6匹配间隔要求
        DestRowNo = DestRowNo + 6
    Loop
End Sub

代码说明

  • 用单层循环即可完成对应映射,无需嵌套循环,避免重复覆盖
  • 每次循环后源行号+1、目标行号+6,完全匹配你要求的对应规则
  • 循环上限设置为1000,匹配你提到的源表数据到1000行的需求,可根据实际数据量自行调整上限
  • 变量统一使用Long类型,避免行号超过Integer上限导致报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:15:07