陆续写了好几期按指定次数复制区域的各种方法,今天再教一下 VBA 怎么实现。
这种跟计算无关,有规律可循的重复操作,用 VBA 绝对是事半功倍的。
案例:将下图 1 中的姓名区域整个复制 5 次,以及每个名字分别复制 5 次,效果如下图 2、3 所示。



1. 按 Alt+F11 打开 VBE --> 输入以下代码:
Sub CopyRangeMultipleTimes()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(1) '数据表所在的工作表
Dim sourceRange As Range
Dim destRange As Range
Dim i As Integer
Set sourceRange = ws.Range("A2:A4") ' 设置源区域
Set destRange = ws.Range("B2") ' 设置要放置结果的起始位置
For i = 1 To 5 ' 将源区域循环复制5次
sourceRange.Copy Destination:=destRange
Set destRange = destRange.Offset(sourceRange.Rows.Count) ' 向下偏移源区域的行数
Next i
End Sub

2. 点击“运行”按钮运行代码。


3. 添加标题。

1. 使用如下代码:
Sub CopyRangeMultipleTimes()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(1) '数据表所在的工作表
Dim i As Integer, j As Integer
Dim targetRow As Integer
targetRow = 2 ' B列起始行号
For i = 2 To 4 '源区域的行号
For j = 1 To 5 '循环 5 次
ws.Cells(targetRow, 2).Value = ws.Cells(i, 1).Value ' 假设A列是第一列,B列是第二列
targetRow = targetRow + 1 ' 移动到B列的下一行
Next j
Next i
End Sub

2. 运行代码。
