Excel VBA 反复剪切和粘贴愤怒

Excel VBA cut and paste rage repeatedly

在使用 VBA 并尝试反复剪切和复制范围方面,我完全是个新手。 我一直在搜索和尝试我的代码,但一无所获...

例如,假设范围 (A1:M1084) 中的全部数据由 124 行 13 列的块组成。 所以第一个块在 (A1:M124) 中。 第二个数据块当前在 (A125:M248) 中,想将其剪切并粘贴到第一个块旁边,中间留一列 space (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