如果单元格符合条件,则仅复制工作表A的部分行,并复制到不同的工作表

时间:2017-01-23 09:21:47

标签: vba excel-vba excel

这是我目前正在使用的代码,它运行得很完美,但它复制了整行,而不仅仅是我希望它去的部分。 如何指定仅复制行的一部分的代码? 我评论了我认为问题的代码。 任何帮助都会非常有帮助! 附:我暂时搁置这个帖子,因为我认为这已经解决了,但我的搜索没有找到任何结果。

Sub CopySPData()

    Dim c As Range
    Dim j As Integer
    Dim Source As Worksheet
    Dim Target As Worksheet

    ' Change worksheet designations as needed
    Set Source = ActiveWorkbook.Worksheets("All")
    Set Target = ActiveWorkbook.Worksheets("Host New")

    j = 3     ' Start copying to row 3 in target sheet
    For Each c In Source.Range("F1:F1000")   ' Do 1000 rows
        If c = "Host" Then
           Source.Rows(c.Row).Copy Target.Rows(j) ' I think the issue is in this line
           j = j + 1
        End If
    Next c
End Sub

2 个答案:

答案 0 :(得分:1)

您只需更改包含行的Rows() Range()即可。例如,如果您只需要Source表中 C K 的列,并将其粘贴到 E Target表中,您需要更改:

Source.Rows(c.Row).Copy Target.Rows(j)

为:

Source.Range("C" & c.Row & ":K" & c.Row).Copy Target.Range("E" & j)

答案 1 :(得分:0)

假设您要将E列中的单元格复制到G列,其中该行F列中的值等于“Host”,并将其粘贴到“Host New”表,从A列开始,您可以使用以下一行:

Source.Range("E" & c.Row & ":G" & c.Row).Copy Target.Range("A" & j)

注意:您可以使用AutoFilter方法一次复制整个范围,而无需使用For Each c In Source.Range("F1:F1000")循环。