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

Excel VBA如何实现复制工作表数据区域的最后N行数据?

VBA动态取最后N行数据的实现方案

你完全可以沿用当前直接赋值的高效方法,只需要调整源数据区域Dat1的定义逻辑即可,不需要更换实现思路。原方法直接通过单元格数组批量读写,性能远优于复制粘贴操作,非常适合测试结果这类批量数据的迁移场景。

具体实现代码

Dim lastRow As Long
Dim targetRows As Long
targetRows = 20 ' 可修改为任意需要提取的行数

With Workbooks("Test Results.xlsm").Worksheets("Example")
    ' 定位AP列最后一个有数据的行,避免固定15000行带来的空行问题
    lastRow = .Cells(.Rows.Count, "AP").End(xlUp).Row
    
    ' 边界异常处理:有效行数不足指定行数时,取AP31之后的所有有效数据
    If lastRow - targetRows + 1 < 31 Then
        Set Dat1 = .Range("AP31:AP" & lastRow)
    Else
        ' 取最后targetRows行的范围
        Set Dat1 = .Range("AP" & (lastRow - targetRows + 1) & ":AP" & lastRow)
    End If
End With

' 沿用原有赋值逻辑,自动适配源数据大小写入目标区域
Raw1.Range("A3").Resize(Dat1.Rows.Count, Dat1.Columns.Count).Value = Dat1.Value

改动说明

  • 保留了原有直接赋值的核心逻辑,仅将原固定范围AP31:AP15000替换为动态计算的最后N行范围
  • 新增边界判断逻辑,避免实际有效数据量不足指定行数时出现范围定义错误
  • 写入目标区域时去掉了原硬编码的结束行号,通过Resize自动适配源数据的实际大小,不会写入多余空值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:36:04