乐于分享
好东西不私藏

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

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

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

点击任意文章上方的“☆星标”即可。

陆续写了好几期按指定次数复制区域的各种方法,今天再教一下 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 iEnd 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 iEnd Sub

2. 运行代码。

转发、点赞、在看也是爱!

相关学习资料