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

求助Excel VBA宏开发:将工作表内容插入至另一工作表指定行之间

Excel VBA宏完善需求
  • 第一个工作表:包含多行结构化数据(示例为3行,含序号、名称等列)
  • 第二个工作表:已有若干行数据,需将第一个表的内容插入到每一行原有数据的下方
  • 预期效果:第二个工作表中,原有每一行数据后都完整插入第一个表的所有行,形成「原有行+第一个表全量行」的重复结构

当前使用的VBA代码:

Sub insertabc(LastRow As Long)
MsgBox LastRow

For i = 1 To LastRow
ActiveCell.Offset(1, 0).EntireRow.Insert
ActiveCell.Offset(2, 0).Select
Next i
          
End Sub

完善后的VBA宏代码

Sub InsertSheet1IntoSheet2()
    Dim wsSource As Worksheet
    Dim wsTarget As Worksheet
    Dim sourceLastRow As Long
    Dim targetLastRow As Long
    Dim i As Long
    
    ' 指定源工作表(第一个表)和目标工作表(第二个表),替换为你的实际表名
    Set wsSource = ThisWorkbook.Worksheets("Sheet1")
    Set wsTarget = ThisWorkbook.Worksheets("Sheet2")
    
    ' 获取源表最后一行数据的行号
    sourceLastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
    
    ' 从目标表最后一行往前遍历,避免插入行导致的行号偏移问题
    targetLastRow = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row
    For i = targetLastRow To 1 Step -1
        ' 在当前行下方插入与源表行数一致的空行
        wsTarget.Rows(i + 1 & ":" & i + sourceLastRow).Insert Shift:=xlDown
        ' 复制源表数据到插入的空行区域
        wsSource.Rows("1:" & sourceLastRow).Copy Destination:=wsTarget.Rows(i + 1)
    Next i
    
    MsgBox "数据插入完成!"
End Sub

关键说明

  • 明确指定源/目标工作表,避免依赖ActiveCell这类不稳定的操作对象
  • 从后往前遍历目标表行:如果从前往后遍历,插入行后会导致后续行号偏移,引发重复插入或遗漏问题
  • 一次性插入对应行数并批量复制数据,比逐行插入更高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:42:38