Excel VBA:如果单元格包含特定数据,则复制一行

时间:2017-10-26 06:39:17

标签: excel vba excel-vba

一般来说,我对编码相对较新,但这里有:

我有一个很大的会员数据列表,我正在努力组织。这将是每周完成的,因为数据是可变的,所以我试图稍微自动化工作。

我的问题是,如果特定单元格包含特定文本,我想复制整行数据。

我已经能够使用此代码执行此操作:

Sub OK()

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

Set Source = ActiveWorkbook.Worksheets("Status")
Set Target = ActiveWorkbook.Worksheets("OK")

j = 2
For Each c In Source.Range("F1:F300")
    If c = "Yes" Then
       Source.Rows(c.Row).Copy Target.Rows(j)
       j = j + 1
    End If
Next c
End Sub

但是,我想使用多个条件,即如果 列E和I包含“是”,我只想复制行。

我最初的猜测是这样,但它看起来不对:

For Each c In Source.Range("F1:F300") AND Source.Range("I1:I300")

如何在代码中添加条件?我曾尝试使用“和”,但似乎无法正确使用它。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您无法以循环方式添加其他范围。而是循环放置您最初放置的一个范围,并作为要逐行检查匹配的附加范围,但在列使用OFFSET方面不同,以测试同一行中的列I值。如下:

If c = "Yes" And c.Offset(0, 3) = "Yes"

所有在一起:

Sub OK()

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

Set Source = ActiveWorkbook.Worksheets("Status")
Set Target = ActiveWorkbook.Worksheets("OK")

j = 2
For Each c In Source.Range("F1:F300")
    If c = "Yes" And c.Offset(0, 3) = "Yes" Then
       Source.Rows(c.Row).Copy Target.Rows(j)
       j = j + 1
    End If
Next c
End Sub