如何编写循环以在excel中复制和粘贴多行?

如何编写循环以在excel中复制和粘贴多行?,excel,vba,Excel,Vba,所以我有一个很长的表格,我想把每90个单元格放在一页上。我试着写一个循环,每次45行复制粘贴一次,但我真的不知道怎么做。任何帮助都将不胜感激!先谢谢你 Sub Macro2() Range("A47:C92").Select (I selected 45 rows a time) Selection.Cut Range("E1").Select ActiveSheet.Paste Columns("F:F").C

所以我有一个很长的表格,我想把每90个单元格放在一页上。我试着写一个循环,每次45行复制粘贴一次,但我真的不知道怎么做。任何帮助都将不胜感激!先谢谢你

Sub Macro2()

    Range("A47:C92").Select         (I selected 45 rows a time)
    Selection.Cut
    Range("E1").Select             
    ActiveSheet.Paste
    Columns("F:F").ColumnWidth = 15.67
    Range("A47:C92").Select
    Selection.Delete Shift:=xlUp

    Range("A93:C138").Select
    Selection.Cut
    Range("E47").Select
    ActiveSheet.Paste
    Range("A93:C138").Select
    Selection.Delete Shift:=xlUp

    Range("A139:C184").Select
    Selection.Cut
    Range("E93").Select
    ActiveSheet.Paste
    Range("A139:C184").Select
    Selection.Delete Shift:=xlUp
End Sub

这里有一个模式,你可以这样写一个循环:(我的递增可能有点错误,但要一直玩到正确为止。重要的是循环语法)


我想这就是你想要做的。例如,如果列“A”中有1到300个数据,则希望将其拆分为2列,其中列“A”将包含1到45个数据,列“E”将包含46到90个数据。所以总共有165行来覆盖所有300个数据。看起来是这样的

1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 1 4 2 5 3 6 7 10 8 11 9
Sub make_dual_column()
'speed up's the process
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False


Dim i As Integer, last_row As Integer
'last row of col A
last_row = Range("A" & Rows.Count).End(xlUp).Row
'last row of col E
col_E_last_row = Range("E" & Rows.Count).End(xlUp).Row

'''every after 45 rows, copy the next 45 rows
'''and paste it in column E 
For i = 1 To last_row Step 45
    If i Mod 2 = 0 Then            
        Range("A" & i & ":C" & i + 44).Select
        Selection.Copy
        Range("E" & col_E_last_row & ":G" & col_E_last_row + 44).Select
        ActiveSheet.Paste
        Range("A" & i & ":C" & i + 44).Select
        Selection.ClearContents
        'update the last empty row of column E
        col_E_last_row = Range("E" & Rows.Count).End(xlUp).Row + 1
    End If
Next
    ' delete all empty cells from column A
    Columns("A:A").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.Delete Shift:=xlUp
    ActiveWorkbook.Save

'back to normal default state
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub