簡體   English   中英

Excel VBA 剪切粘貼風靡一時

[英]Excel VBA cut and paste rage repeatedly

我是使用 VBA 並嘗試反復剪切和復制范圍的新手。 我正在搜索並嘗試我的代碼,但一無所獲......

例如,假設一個范圍 (A1:M1084) 中的整個數據由 124 行和 13 列的塊組成。 所以第一個塊在 (A1:M124) 中。 第二個數據塊當前位於 (A125:M248) 中,並且想將其剪切並粘貼到第一個塊旁邊,在中間留出一個列空間 (N) 到 (O1:AA248)。 然后,重復該過程直到行尾(這次是 1084,但可以是任何其他數字),繼續將下一個塊(A249:M372)粘貼到第二塊旁邊,到(AC1:AO248),依此類推...

如果有人可以請幫助,非常感謝!

嘗試這樣的事情。

Sub MoveBlocks()

    Dim rowCount As Integer, colCount As Integer
    Dim inRow As Integer
    Dim blockSize As Integer
    Dim colOffset As Integer

    blockSize = 124
    rowCount = Range("A1").CurrentRegion.Rows.Count
    colCount = Range("A1").CurrentRegion.Columns.Count

    For inRow = blockSize + 1 To rowCount Step blockSize
        colOffset = Int(inRow / blockSize) * (colCount + 1)
        Range(Cells(1, 1), Cells(blockSize, colCount)).Offset(0, colOffset).Value2 = Range(Cells(1, 1), Cells(blockSize, colCount)).Offset(inRow - 1, 0).Value2
        Range(Cells(1, 1), Cells(blockSize, colCount)).Offset(inRow - 1, 0).ClearContents
    Next inRow
End Sub

畢竟,經過這么多試驗和錯誤,我自己得到了答案。 發布它是否可能有用。 另外,如果有任何其他更有效的代碼,將很高興擁有!


Sub Cutrange()

  Dim i As Long
  Dim Lrow As Long
  Lrow = Cells(Rows.Count, 1).End(xlUp).Row

  Dim oRange As Range, dRange As Range
  Set oRange = Range(Cells(1, 1), Cells(124, 14))
  Set dRange = Cells(1, 1)

  For i = 1 To Lrow 
    oRange.Offset(124 * i).Cut Destination:=dRange.Offset(, 14 * i)
  Next i
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM