DC娱乐网

但凡 Excel 中这种有规律的重复操作,自动化才是终极简化

陆续写了好几期按指定次数复制区域的各种方法,今天再教一下 VBA 怎么实现。这种跟计算无关,有规律可循的重复操作,用 V

陆续写了好几期按指定次数复制区域的各种方法,今天再教一下 VBA 怎么实现。

这种跟计算无关,有规律可循的重复操作,用 VBA 绝对是事半功倍的。

案例:

将下图 1 中的姓名区域整个复制 5 次,以及每个名字分别复制 5 次,效果如下图 2、3 所示。

解决方案 1:

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. 添加标题。

解决方案 2:

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. 运行代码。