Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 - Fatal编程技术网

Excel VBA中的循环剪切粘贴功能

Excel VBA中的循环剪切粘贴功能,excel,vba,Excel,Vba,嗨,我正在尝试剪切偶数行,然后将其粘贴到奇数行旁边 我的数据是这样的 我有下面的代码,它将只剪切第2行并粘贴到第1行旁边 Range("B2:E2").Cut Range("F2") 但我不可能对每一行都这么做。那么,我如何做一个循环,这样它就可以为我完成其余的工作呢 理想的结果应该是这样的 这对我来说很有用: Sub SubCutAndPaste() 'Declaring variable. Dim RngRange01 As Ran

嗨,我正在尝试剪切偶数行,然后将其粘贴到奇数行旁边

我的数据是这样的

我有下面的代码,它将只剪切第2行并粘贴到第1行旁边

Range("B2:E2").Cut Range("F2")
但我不可能对每一行都这么做。那么,我如何做一个循环,这样它就可以为我完成其余的工作呢

理想的结果应该是这样的

这对我来说很有用:

Sub SubCutAndPaste()

    'Declaring variable.
    Dim RngRange01 As Range
    
    'Setting variable.
    Set RngRange01 = ActiveSheet.Range("A1:E1")
    
    'Starting a Do-Loop cycle that will end when all the cells in the given RngRange01 are _
    blank.
    Do Until Excel.WorksheetFunction.CountBlank(RngRange01) = RngRange01.Cells.Count
        
        'Cutting-pasting the second lane. The second lane has the same columns as the _
        RngRange01 and it is offset by 1 column.
        RngRange01.Offset(1, 1).Cut RngRange01.Offset(0, RngRange01.Columns.Count)
        
        'Setting RngRange01 for the next lane.
        Set RngRange01 = RngRange01.Offset(2, 0)
    Loop
    
End Sub
请尝试以下方法:

根据数据更改for循环中的偏移量和范围

Sub ReFormat()

    Dim cell
    Dim CopyRange As String
    Dim PasteRange As String
    
    For Each cell In Range("A1:A12")
    
        ' Filter out only odd rows
        If (cell.Row Mod 2) <> 0 Then
        
            'create range string for values to copy
            CopyRange = (cell.Offset(1, 1).Address + ":" + cell.Offset(1, 5).Address)
            
            'create range string for values to paste into
            PasteRange = (cell.Offset(0, 5).Address + ":" + cell.Offset(0, 9).Address)
            
            Range(CopyRange).Copy
            
            Range(PasteRange).PasteSpecial xlPasteValues
            
            Range(CopyRange).ClearContents
            
        End If
    
    Next
    
End Sub
Sub-ReFormat()
暗室
将复制范围设置为字符串
将范围设置为字符串
对于范围内的每个单元格(“A1:A12”)
'仅过滤奇数行
如果(cell.Row Mod 2)为0,则
'为要复制的值创建范围字符串
CopyRange=(单元格偏移量(1,1).地址+”:“+单元格偏移量(1,5).地址)
'为要粘贴到的值创建范围字符串
PasteRange=(单元格偏移量(0,5).Address+“:”+单元格偏移量(0,9).Address)
范围(CopyRange)。复制
范围(粘贴范围)。粘贴特殊xlPasteValues
范围(CopyRange).ClearContents
如果结束
下一个
端接头

您可以声明一个范围变量,然后使用range.Offset来标识目标。