如果有条件,如何将特定单元格从一张纸复制到另一张纸上

时间:2019-02-14 16:49:16

标签: excel vba

我是VBA的新手。

我想根据条件将特定单元格从一张纸复制到另一张纸。 例如,如果在H2:H1000值的范围=“是”,则将条件符合的同一行中的A,B,C和D列的单元格复制到另一张纸上。

我的代码只是我所做的事情的开始,我不知道如何从符合条件的同一行中选择单元格。

Sub FindandCopy()

    Dim rngA As Range
    Dim cell As Range


    Set rngA = Sheets("OFCE").Range("H2:H1000")
    For Each cell In rngA
        If cell.Value = "Yes" Then
            cell.EntireRow.Copy
            Sheets("Dashboard").Range("I2").End(xlDown).Select
            ActiveSheet.Paste
        End If
    Next cell

End Sub

2 个答案:

答案 0 :(得分:0)

您可能想尝试使用v-lookup或简单的sumif函数。您可以在工作表本身的vba外部进行此操作,也可以将其编程到现有的宏中。

答案 1 :(得分:0)

关于此的在线材料很多,因此您应该能够解决它。

我使用了offset(从H到A)并调整大小(将A扩展到A-D),然后复制到另一张纸上I的第一行未使用。

您不需要选择/激活,实际上是discouraged

Sub FindandCopy()

Dim rngA As Range
Dim cell As Range

Set rngA = Sheets("OFCE").Range("H2:H1000")

For Each cell In rngA
    If cell.Value = "Yes" Then
        cell.Offset(, -7).Resize(, 4).Value.Copy _
             Sheets("Dashboard").Range("I" & Rows.Count).End(xlUp)(2)
    End If
Next cell

End Sub

但是,您应该考虑使用“自动筛选”或“查找”来执行此操作,而不是循环,因为它们效率更高。