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

VBA代码优化:从第10行起复制至N列最后有值行的实现方案

调整VBA代码实现批量复制行

没问题,我来帮你修改这段VBA代码,实现从第10行开始,复制到N列最后有数据的行的需求,同时正确更新目标表的插入行号:

关键修改点

  1. 精准获取N列最后有数据的行号(以源表为参照)
  2. 复制从第10行到该最后一行的整行范围
  3. 正确计算插入后目标表的新行号(要加上复制的总行数,而非只加1)

修改后的完整代码示例

Dim lastRow As Long
Dim wsSource As Worksheet
Dim wsMaster As Worksheet

' 定义工作表对象,让代码更清晰易维护
Set wsSource = wbSource.Sheets(SITE_TEMPLATE)
Set wsMaster = wbMaster.Sheets(SITE_TEMPLATE)

' 获取N列最后有数据的行号,确保不小于10(避免N列在10行以上无数据的异常情况)
lastRow = wsSource.Cells(wsSource.Rows.Count, "N").End(xlUp).Row
If lastRow < 10 Then lastRow = 10 ' 如果N列没有比第10行更靠下的数据,就默认复制第10行

' 复制指定范围的整行到目标表
wsSource.Rows("10:" & lastRow).EntireRow.Copy wsMaster.Range("A" & insertRow2)

' 更新插入行号:加上复制的总行数(从10到lastRow的总行数为 lastRow -10 +1)
insertRow2 = insertRow2 + (lastRow - 10 + 1)

代码细节说明

  • wsSource.Cells(wsSource.Rows.Count, "N").End(xlUp).Row:这是VBA中定位最后一行的标准写法,从N列最底部往上找第一个有数据的行,比UsedRange更精准(不会被格式残留的空行干扰)
  • 加入If lastRow <10 Then lastRow=10的判断:防止N列在第10行以下无数据时出现复制范围无效的错误,保障代码鲁棒性
  • 更新insertRow2时计算总行数:避免每次只加1导致后续插入位置错误,确保下一次复制能定位到正确的空白行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:07:28