VBA代码优化:从第10行起复制至N列最后有值行的实现方案
调整VBA代码实现批量复制行
没问题,我来帮你修改这段VBA代码,实现从第10行开始,复制到N列最后有数据的行的需求,同时正确更新目标表的插入行号:
关键修改点
- 精准获取N列最后有数据的行号(以源表为参照)
- 复制从第10行到该最后一行的整行范围
- 正确计算插入后目标表的新行号(要加上复制的总行数,而非只加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
相关产品推荐
相关产品推荐

