循环将复制和粘贴列从一张工作表粘贴到另一张工作表

时间:2018-06-22 14:36:54

标签: vba excel-vba excel

这应该是相对容易的事情,但是请原谅我,因为我是VBA的新手。我正在尝试通过将列从一张纸复制到粘贴到另一张纸来实现自动循环。列的长度不同,并且复制和粘贴之间的偏移量也不同。

这是我到目前为止的内容(它超时了,所以不确定我的循环是怎么回事)。

Sub LoopEveryTwoColumns()

Dim original As Range
Dim destination As Range

Set original = Sheets("Sheet1").Columns("B")
Set destination = Sheets("Sheet2").Columns("A")

Dim x As Long

    For x = 1 To 3
        original.Copy (destination)
        original.Offset(0, 2).Copy (destination.Offset(0, 1))
    Next x

End Sub

这就是我想要的样子。第一张图片是Sheet1上的原始范围。第二张图片是应复制到Sheet2的目标范围。

Original Range on Sheet1

Destination Range on Sheet2

2 个答案:

答案 0 :(得分:1)

没有变量,这很简单:

Sub TestMe()    
    Dim x As Long    
    For x = 1 To 3
        Worksheets(1).Columns(x * 2).Copy Worksheets(2).Columns(x)
    Next x    
End Sub

这个想法是,您需要每隔一列-因此x * 2。在第二个工作表中,您需要连续粘贴-x

如果需要使用变量(通常更好),请为工作表而不是列设置变量:

Sub TestMe()

    Dim original As Worksheet
    Dim destination As Worksheet

    Set original = Worksheets(1)
    Set destination = Worksheets(2)

    Dim x As Long

    For x = 1 To 3
        original.Columns(x * 2).Copy destination.Columns(x)
    Next x

End Sub

答案 1 :(得分:0)

尝试使用此方法。

For x = 1 To 3
    original.Columns(x+1).Copy destination.Cells(1,x)
Next x