我已经在Excel中记录了这个宏。这个想法是遍历所有行(100) 并重复SUB。我想我找到了正确的算法(我有基本的 Turbo Pascal 知识)。
这是我的算法:
创建一个使用变量 i 进行计数的循环。 对于 i from 2 (我们从第 2 行开始,第 1 行有标题)到 200 (即使我们在脚本完成执行时最初有 100 行,我们也会行数增加了一倍)
执行子操作
如何制作 Rows("2:2") 例如来引用 i 的当前值。
如何Rows("3:3")使用值i+1。
如何使Range("B2")使用值B(i)
我被循环和正确的语法困住了,请帮忙。另外,因为我想更深入地了解这个主题,你能推荐一些好的资源吗?高中毕业后我对编码并不真正感兴趣,但现在我想更深入地了解这个主题。
Sub Macro2()
Rows("2:2").Select
Selection.Copy
Rows("3:3").Select
Selection.Insert Shift:=xlDown
Range("B2").Select
Application.CutCopyMode = False
Selection.Cut
Range("A3").Select
ActiveSheet.Paste
End Sub
最佳答案
类似这样的事情:
Sub Macro2()
Dim i As Long
For i = 100 To 2 Step -1
Rows(i).Copy
Rows(i + 1).Insert shift:=xlDown
Cells(i, 2).Cut Cells(i + 1, 1)
Next i
End Sub
我删除了 .Select
和 .Activate
它会减慢代码速度。请参阅HERE以获得良好的指导。
添加或减少行时,最好从下到上迭代。 Step - 1
就是这样做的。它从第 100 行开始一直到第 2 行。
另一个注意事项,您需要指定工作表,以便它查看正确的工作表:
Sub Macro2()
Dim ws as Worksheet
Dim i As Long
Set ws = Sheets("Sheet1") 'Change to your sheet.
For i = 100 To 2 Step -1
ws.Rows(i).Copy
ws.Rows(i + 1).Insert shift:=xlDown
ws.Cells(i, 2).Cut ws.Cells(i + 1, 1)
Next i
End Sub
关于excel - 更改录制的宏以处理所有数据[需要有关循环和语法的帮助],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36607344/