在Microsoft Excel 2013中搜索两列,并使用特定值设置第三列的值

时间:2015-08-24 11:35:50

标签: excel excel-vba excel-2013 vba

我想在firstname_lastname中搜索特定文本John_Smith,例如worksheetAWorksheetA有一列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中完成此操作?

2 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。因为你似乎真的想要第三列实际上说“是”/“否”,这是相当简单的。假设您的搜索字词在E2中[以FIRSTNAME_LASTNAME的形式],只需将其放在单元格C2中并向下拖动:

=IF(A2&"_"&B2=$E$2,"Yes","No")

然后你可以添加一个新列来检查C列中的那行是否为“是”,如果是,则在那里添加值。或者,将“是”替换为您的特殊值。

答案 1 :(得分:1)

这是一个例子,将字符串拆分为两个单独的字符串。然后循环遍历范围。

设置 enter image description here

守则

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

结果

enter image description here