繁体   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