如何制作Excel宏循环以剪切第二行并将其粘贴到第一行

时间:2019-02-08 16:50:59

标签: excel vba

我是Excel VBA的新手,我有一个包含约200个条目的报告,但是每个条目都分为两行,因此第1行的前8列是数据的前一半,而第1行的前8列是数据的前一半。第二行是下半场。我想在第2行中使用8列,将其剪切并粘贴到第一行的末尾,删除空行,然后继续浏览报告的其余部分。

我使用Record Macro来获取剪切范围“ A2:H2”并将其粘贴到“ I1”的代码,然后在下一个条目中重复该操作。我知道这样做效率不高,因为它不是循环的,而且时间很长。任何帮助将不胜感激。这是我的代码示例:

    Range("A2:H2").Select
    Selection.Cut
    Range("I1").Select
    ActiveSheet.Paste

    Range("A4:H4").Select
    Selection.Cut
    Range("I3").Select
    ActiveSheet.Paste

    Range("A6:H6").Select
    Selection.Cut
    Range("I5").Select
    ActiveSheet.Paste

    Range("A8:H8").Select
    Selection.Cut
    Range("I7").Select
    ActiveSheet.Paste

    Range("2:2,4:4,6:6,8:8").Select
    Selection.Delete Shift:=xlUp

结果将是来自A1:P1的数据,并且只有200行数据,而不是400行。谢谢!

1 个答案:

答案 0 :(得分:1)

这是一个替换您的代码的循环:

Dim r As Long, toprow As Long, bottomrow As Long
toprow = 2
bottomrow = 8
For r = toprow To bottomrow Step 2
    Range("A" & r & ":H" & r).Cut Range("I" & r - 1)
Next

如果要删除间距,则循环内部应为

Range("A" & r & ":H" & r).Cut Range("I" & r / 2)