更改录制的宏以处理所有数据[需要循环和语法帮助]

时间:2016-04-13 19:03:19

标签: excel vba

我在excel中记录了这个宏。想法是遍历所有行(100) 并重复SUB。我想我想到了正确的算法(我有基本的Turbo Pascal知识)。

这是我的算法:

创建一个使用变量i的循环,用于计数。 对于i来自2 (我们从第2行开始,第1行有标题)到200 (即使我们最初在脚本完成执行时有100行,我们将将行数增加了一倍)

执行

如何使行(" 2:2")例如引用i的当前值。

行(" 3:3")如何使用值i + 1。

如何使范围(" 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

1 个答案:

答案 0 :(得分:2)

这样的事情:

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