如何让我的宏粘贴到特定的单元格

时间:2017-08-01 20:21:16

标签: excel vba excel-vba copy

我有一个宏,它根据特定的单元格值复制整行,并将这些行粘贴到另一个工作表中。但是,在第二张纸上,它粘贴到单元格B1,但我希望它粘贴到B2,以便我可以包含标题。

(测试表来自B:E)

Dim C As Range
Dim Test As Worksheet
Dim Pastesheet As Worksheet
Dim j As Integer

'Find the last row with data in column C
LR = Worksheets("Test Sheet").Cells(Rows.Count, "B").End(xlUp).Row

Set Test = Worksheets("Test Sheet")  ' Copy From this sheet
Set Pastesheet = Worksheets("Inventory")  ' to this sheet

'look at every cell in D2 onwards

j = 1

For Each C In Test.Range("D2:D" & LR)

If C.Value = True Then

        'Copy code

        C.EntireRow.Copy Pastesheet.Rows(j) ' copy the row from column D that meets that requirements

        j = j + 1

    End If

Next C


End Sub

1 个答案:

答案 0 :(得分:0)

解决方案只是将粘贴行更改为从2开始,因此j = 2而不是j = 1

我还要补充说,如果你不需要在复制的选择中拉出单元格的格式(也就是你只需要值),我建议你不要使用复制功能,因为这可以得到在大型数据集上相当慢。如果情况确实如此,以下情况会很好地发挥作用:

...

j = 1

For Each C In Test.Range("D2:D" & LR)
    If C.Value = True Then

        Pastesheet.Range(Pastesheet.Cells(j, 2),Pastesheet.Cells(j, 5)).Value = Test.Range(Test.Cells(C.Row, 2),Test.Cells(C.Row, 5)).Value

        j = j + 1
    End If
Next C

...

注意:我假设您要复制的数据只有4列,因为您声明数据来自B:E,但可以调整此数据以捕获更多列根据需要简单地通过调整列数

代码本身比粘贴命令稍微长一些,看起来不那么优雅,但对于大型数据集,这可以节省相当多的处理时间。