Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA反复剪切和粘贴_Excel_Vba_Loops_Range_Paste - Fatal编程技术网

Excel VBA反复剪切和粘贴

Excel VBA反复剪切和粘贴,excel,vba,loops,range,paste,Excel,Vba,Loops,Range,Paste,在使用VBA和尝试反复剪切和复制范围方面,我是一个完全的新手。 我一直在搜索和尝试我的代码,但什么也找不到 例如,假设范围(A1:M1084)中的整个数据由124行13列的块组成。 因此,第一个块位于(A1:M124)。 第二个数据块当前位于(A125:M248),并且希望将其剪切并粘贴到第一个数据块的旁边,在这两个数据块之间留出一个列空间(N)到(O1:AA248)。 然后,重复该过程直到行结束(这次是1084,但可以是任何其他数字),继续粘贴第二个块旁边的下一个块(A249:M372),粘贴

在使用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