我有一个包含多列的工作表,我试图在特定的列(在本例中为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
答案 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