VBA搜索列中的3个可能值之一

时间:2018-10-24 15:31:58

标签: excel vba

我有一个包含多列的工作表,我试图在特定的列(在本例中为Status)上搜索3个可能值(红色,绿色或黄色)中的1个。如果我只是在寻找一个价值,我想我就能找到一个。但是,由于我要在“状态”列中查找至少3个值中的1个的每个实例,因此我不确定该如何工作。在此先感谢您的帮助。

Num Status
1   Blah
2   Green
3   Red
4   Blah
5   Yellow
6   Blah
7   Blah
8   Green
9   Blah
10  Blah
11  Green
12  Green
13  Red
14  Blah
15  Green
16  Blah
17  Green
18  Blah
19  Red
20  Blah

1 个答案:

答案 0 :(得分:0)

这将使您指定要搜索的范围,结果的起始范围以及要查找的值的字符串列表。可以轻松地将其转换为值数组以进行查找。如果要进行不区分大小写的搜索,可以将UCASE添加到IF语句的两侧。

Sub TEST()
    Call MultiFindCopy(Sheet1.Range("B1:B10"), Sheet2.Range("A1"), "Red, Green, Yellow")

End Sub

Private Sub MultiFindCopy(ByRef SearchRange As Range, ByRef DestinationRange As Range, ByVal itemList As String, Optional Delimiter As String = ",")
    Dim oFindList() As String
    oFindList = Split(itemList, Delimiter)

    Dim oDestRow As Long
    Dim oSourceRow As Long

    For oSourceRow = 1 To SearchRange.Rows.Count
        For Each oItem In oFindList
            If SearchRange.Cells(oSourceRow, 1).Value = Trim(oItem) Then
                DestinationRange.Offset(oDestRow, 0).Value = SearchRange.Cells(oSourceRow, 0).Value
                DestinationRange.Offset(oDestRow, 1).Value = SearchRange.Cells(oSourceRow, 1).Value
                oDestRow = oDestRow + 1
            End If
        Next
    Next

End Sub