我想在firstname_lastname
中搜索特定文本John_Smith
,例如worksheetA
。 WorksheetA
有一列firstname
和另一列lastname
。因此,在知道哪一行具有我搜索的名字和姓氏之后,我想在具有特定值的同一行中设置单元格的值。
例如,如果这是我的工作表:
Firstname Lastname Found
Matt Damon No
Smith Andrew No
John Smith No
Tom Mark No
我的搜索字是John_Smith
,结果将是
Firstname Lastname Found
Matt Damon No
Smith Andrew No
John Smith Yes
Tom Mark No
请问如何在VBA excel中完成此操作?
答案 0 :(得分:1)
有很多方法可以做到这一点。因为你似乎真的想要第三列实际上说“是”/“否”,这是相当简单的。假设您的搜索字词在E2中[以FIRSTNAME_LASTNAME的形式],只需将其放在单元格C2中并向下拖动:
=IF(A2&"_"&B2=$E$2,"Yes","No")
然后你可以添加一个新列来检查C列中的那行是否为“是”,如果是,则在那里添加值。或者,将“是”替换为您的特殊值。
答案 1 :(得分:1)
这是一个例子,将字符串拆分为两个单独的字符串。然后循环遍历范围。
守则
Sub Button1_Click()
Dim e As String, a As String, b As String
Dim Rws As Long, rng As Range, c As Range
Rws = Cells(Rows.Count, "A").End(xlUp).Row
Set rng = Range(Cells(2, 1), Cells(Rws, 1))
e = Range("E1")
a = Left(e, InStr(e, "_") - 1)
b = Right(e, InStr(e, "_"))
For Each c In rng.Cells
If c = a And c.Offset(0, 1) = b Then c.Offset(0, 2) = "Yes"
Next c
End Sub
结果