公众号平台最新的推送规则对技术类文章不太友善,如果不想错过干货,请务必“设为星标”哦!!!
点击任意文章上方的“☆星标”即可。

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



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

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


3. 添加标题。

解决方案 2:
1. 使用如下代码:
Sub CopyRangeMultipleTimes()Dim ws As WorksheetSet ws = ThisWorkbook.Sheets(1) '数据表所在的工作表Dim i As Integer, j As IntegerDim targetRow As IntegertargetRow = 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 jNext iEnd Sub

2. 运行代码。

夜雨聆风