首页 > 解决方案 > Excel VBA剪切和粘贴反复风靡一时

问题描述

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

例如,假设一个范围 (A1:M1084) 中的整个数据由 124 行和 13 列的块组成。所以第一个块在 (A1:M124) 中。第二个数据块当前位于 (A125:M248) 中,并且想将其剪切并粘贴到第一个块旁边,在中间留出一个列空间 (N) 到 (O1:AA248)。然后,重复该过程直到行尾(这次是 1084,但可以是任何其他数字),继续将下一个块(A249:M372)粘贴到第二个块旁边,到(AC1:AO248),依此类推...

如果有人可以请帮助,非常感谢!

标签: excelvbaloopsrangepaste

解决方案


尝试这样的事情。

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

推荐阅读