我是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行。谢谢!
答案 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)