在 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_SmithWorksheetA 有一列 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

结果