需要有关简单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)
答案 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内。