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

标签 excel vba

我已经在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/

相关文章:

c# - 为什么即使我打开了 Excel 工作簿,Excel Application.Workbooks.Count 仍显示为零

vba - Excel在msgbox中显示变量数据

excel - Excel VBA错误中的调试按钮在哪里

css - 将 Excel 范围复制并粘贴到 Outlook 中的 VBA 代码

arrays - 循环遍历具有多个 IF AND 并将数组作为值的行

class - 自定义类声明 - 相同的属性过程的定义

excel - 在 Excel 单元格中复制 TAB (\t) 字符

excel - 需要有关 Excel 中的中值 If 的帮助

variables - excel vba - 使用变量插入公式

email - 将电子邮件地址传递给 VBA 中的 SendObject 方法