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

Excel VBA跨工作表按步长6复制数据后向下填充覆盖问题如何解决

问题根源

你现有代码的问题出在目标单元格行号的计算逻辑错误:内层循环的目标行没有跟随外层循环的偏移量变化,不管外层RowNo2循环到多少,目标行永远固定是3~8,所以会一直重复覆盖该区域。

修正后的代码

Sub CopyDataInBetweenCells()
     Dim wb As Workbook
     Set wb = ThisWorkbook

     Dim destws As Worksheet
     Set destws = wb.Worksheets("Worksheet (2)")

     Dim RowNo2 As Long
     Dim startRow As Long
     
     ' 按规则每个源值的起始行依次为2、8、14...步长为6
     For RowNo2 = 1 To 2000
        startRow = RowNo2 * 6 - 4
        ' 起始行无值说明已处理完所有复制数据,自动退出循环
        If destws.Cells(startRow, 1).Value = "" Then Exit For
        ' 直接批量赋值填充下方6行,无需嵌套循环
        destws.Range(destws.Cells(startRow + 1, 1), destws.Cells(startRow + 6, 1)).Value = destws.Cells(startRow, 1).Value
     Next RowNo2
End Sub

逻辑说明

  • 完全匹配填充规则:A2填充A3A8、A8填充A9A14、A14填充A15~A20,以此类推
  • 去掉冗余嵌套循环,用批量赋值方式大幅提升运行效率
  • 增加空值自动停止逻辑,避免无意义的空循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:57:02