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

Excel VBA数据迁移问题:从DE WB复制有效行至MWB避免签名行

数据迁移VBA代码修复:仅复制DE WB中1-10行的有效数据

我有一个数据录入工作簿(DE WB),需要把里面的数据迁移到主工作簿(MWB)。DE WB的数据行是1-10行,后面跟着签名行;MWB是递增式列表,最后一条记录下面没有其他内容。
当前代码无法正常传输数据:如果把源行改成仅“A”,虽然能复制,但会连带复制签名行。希望实现仅复制1-10行中有内容的行。

原代码:

Set wsCopy = ActiveWorkbook.Worksheets("Sheet1")
Set wsDest = Workbooks("Orders Log TEST.xlsx").Worksheets("FL")
    
lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A10").End(xlUp).Row
lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1).Row

wsCopy.Range("A2:U" & lCopyLastRow).Copy _
wsDest.Range("A" & lDestLastRow)

问题分析

  1. 列参数写法错误:Cells(wsCopy.Rows.Count, "A10") 中的列标识应为单个列字母(如"A")或列号,"A10"是单元格地址,会导致无法正确定位最后一行。
  2. 未限制复制范围:原代码会从找到的最后一行向上取数据,包含了后续的签名行,超出了1-10行的有效数据范围。

修改后的代码

Sub CopyValidData()
    Dim wsCopy As Worksheet
    Dim wsDest As Worksheet
    Dim lCopyLastRow As Long
    Dim lDestLastRow As Long
    
    ' 定义源表和目标表
    Set wsCopy = ActiveWorkbook.Worksheets("Sheet1")
    Set wsDest = Workbooks("Orders Log TEST.xlsx").Worksheets("FL")
    
    ' 在A列的第2-11行(对应10行数据,假设第1行是表头)内找最后一个非空行
    On Error Resume Next
    lCopyLastRow = wsCopy.Range("A2:A11").Find(What:="*", SearchDirection:=xlPrevious).Row
    On Error GoTo 0
    
    ' 如果没有有效数据,直接退出
    If lCopyLastRow = 0 Then Exit Sub
    
    ' 定位目标表的插入起始行
    lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1).Row
    
    ' 复制有效数据到目标表
    wsCopy.Range("A2:U" & lCopyLastRow).Copy wsDest.Range("A" & lDestLastRow)
End Sub

关键说明

  • 限定搜索范围在A2:A11(若你的数据行从第1行开始,改为A1:A10),确保只在10行有效数据内查找,不会包含签名行。
  • 加入错误处理,避免因无数据导致代码报错。
  • 精准定位有内容的最后一行,只复制有效数据行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:09:22