Excel宏来复制某些单元格中的值并将其粘贴到下一个空单元格中

时间:2018-04-10 08:28:47

标签: excel vba excel-vba copy paste

我想创建一个非常简单的宏来复制某些单元格的值(在我的例子中是A1,A5,A9)并将它们粘贴到同一行的下一个空单元格中 比如B1,B5,B9。每次运行应创建一个具有复制值的下一个单元格(不覆盖B1,B5,B9,但将它们放入C1,C5,C9等)

这是我之前编写的代码

Private Sub CommandButton4_Click()



'Use the Range.Copy method for a simple copy/paste

    'The Range.Copy Method - Copy & Paste with 1 line
    Range("A1").Copy Range("B1")
    Range("A5").Copy Range("B5")
    Range("A9").Copy Range("B9")

End Sub

2 个答案:

答案 0 :(得分:1)

这会将A1,A5,A9复制到同一行的下一个空单元格

Dim i As Long
For i = 1 To 9 Step 4 'loops 1, 5, 9 because of Step 4
    With Range("A" & i)
        If .Offset(0, 1) = vbNullString Then 'if B is empty
            .Copy .Offset(0, 1)
        Else 'find next free cell
            .Copy .End(xlToRight).Offset(0, 1)
        End If
    End With
Next i

或者,在最后使用同一行中的单元格后复制到单元格

Dim i As Long
For i = 1 To 9 Step 4 'loops 1, 5, 9 because of Step 4
    With Range("A" & i)
        .Copy .Parent.Cells(i, .Parent.Cells.Columns.Count).End(xlToLeft).Offset(0, 1)
    End With
Next i

请注意,我强烈建议在哪个工作表中指定范围A1(对于两种变体): 而不是

Range("A" & i)

始终指定一个像

这样的工作表
Worksheets("SheetName").Range("A" & i)

答案 1 :(得分:0)

另一种方法是使用后期绑定:

With ThisWorkbook.Worksheets("Sheet1")
    .Range("A1").Copy .Cells(1, .Cells(1, .Columns.count).End(xlToLeft).Column + 1)
    .Range("A5").Copy .Cells(5, .Cells(5, .Columns.count).End(xlToLeft).Column + 1)
    .Range("A9").Copy .Cells(9, .Cells(9, .Columns.count).End(xlToLeft).Column + 1)
End With
相关问题