在 Microsoft excel 2013 中搜索两列并将第三列的值设置为特定值
Search two columns in Microsoft excel 2013 and set the value of a third column with a specific value
我想搜索 firstname_lastname
中的特定文本,例如 worksheetA
中的 John_Smith
。 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 中完成此操作?
有很多方法可以做到这一点。因为您似乎实际上想要第三列,它实际上是 "yes" / "no",这非常简单。假设您的搜索词在 E2 中 [以 FIRSTNAME_LASTNAME 的形式],只需将其放在单元格 C2 中并向下拖动:
=IF(A2&"_"&B2=$E,"Yes","No")
然后您可以添加一个新列来检查 C 列中的该行是否 = "Yes",如果是,则在其中添加值。或者,将 "Yes" 替换为您的特殊值。
举个例子,将字符串拆分为两个单独的字符串。然后遍历范围。
设置
代码
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
结果
我想搜索 firstname_lastname
中的特定文本,例如 worksheetA
中的 John_Smith
。 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 中完成此操作?
有很多方法可以做到这一点。因为您似乎实际上想要第三列,它实际上是 "yes" / "no",这非常简单。假设您的搜索词在 E2 中 [以 FIRSTNAME_LASTNAME 的形式],只需将其放在单元格 C2 中并向下拖动:
=IF(A2&"_"&B2=$E,"Yes","No")
然后您可以添加一个新列来检查 C 列中的该行是否 = "Yes",如果是,则在其中添加值。或者,将 "Yes" 替换为您的特殊值。
举个例子,将字符串拆分为两个单独的字符串。然后遍历范围。
设置
代码
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
结果