求助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
相关产品推荐
相关产品推荐

