首页 > 解决方案 > 如何制作 Excel 宏循环以剪切第二行并粘贴到第一行

问题描述

我对 Excel VBA 非常陌生,我有一个包含大约 200 个条目的报告,但是每个条目都分为两行,因此第 1 行的前 8 列是数据的前半部分,第 2 行的前 8 列是下半场。我想取第 2 行的 8 列,将它们剪切并粘贴到第 1 行的末尾,删除空行,然后继续阅读报告的其余部分。

我使用记录宏来获取剪切范围“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 行。谢谢!

标签: excelvba

解决方案


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

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)

推荐阅读