Excel marco复制并粘贴到特定的空白列

时间:2015-12-10 20:23:12

标签: excel-vba vba excel

需要有关简单excel宏的帮助。我在第1栏X1到X20栏中有数据。我想自动将此信息粘贴到列A,然后当我更新列X中的数字时,我想将此信息粘贴到列B,然后粘贴到列C ...我只需要执行12次。这是我试过的简单宏。

Workbooks("copynpaste2.xlsm").Sheets("Sheet1").Range("X1:X20").copy _ 
destination:=Workbooks("copynpaste2.xlsm").Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Offset(, 1)

2 个答案:

答案 0 :(得分:0)

这个怎么样?

Sub dothis()
    Dim c As Long
    For c = 1 To 12
        If Cells(1, c) = "" Then
            Range("X1:X20").Copy 
            Range(Cells(1, c), Cells(20, c)).Select
            Selection.PasteSpecial xlPasteValues
            selection.NumberFormat = "0.00"
            Exit Sub
        End If
    Next c
End Sub

每次运行宏时,它都会检查列A:L中的单元格1是否为空白,并将单元格X1:X20复制到第一个空列。

答案 1 :(得分:0)

使用Worksheet_Change事件。对于此事件,每次更改列X时,代码将触发并复制到列A ... B ... C ...您将永远不必手动运行任何代码。

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Me.Range("X1:X20")) Is Nothing Then 'only do this when making changes to X1:X20

    Application.EnableEvents = False

    If IsEmpty(Me.Range("A1")) Then

        Me.Range("A1:A20").Value = Me.Range("X1:X20").Value

    ElseIf IsEmpty(Me.Range("B1")) Then

        Me.Range("B1:B20").Value = Me.Range("X1:X20").Value

    Else

        Me.Range("A1:A20").End(xlToRight).Offset(, 1).Value = Me.Range("X1:X20").Value

    End If

    Application.EnableEvents = True

End If

将此代码放在数据所在的工作表上的Worksheet Module内。