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

