查找名称的一个实例并忽略其他类似物

时间:2018-02-22 16:49:31

标签: excel vba

我正在循环查找部分雇主姓名的任何实例。我使用Find功能搜索用户输入的内容。我的问题是它找到第一个值和每个重复的值匹配第一个找到的值,但忽略任何其他值。例如:

Bobs蛋糕店
Bobs Funeral Home
Bobs蛋糕店

它会添加蛋糕店的两个实例,但忽略了殡仪馆。如果殡仪馆首先出现,它会忽略蛋糕店。发生了什么事?

Cells(1, foundColumn).Activate
If Not IsNumeric(rowWanted) Then
    Do Until IsEmpty(ActiveCell)
        If ActiveCell.Value = Cells.Find(rowWanted, LookIn:=xlValues) Then
            rowFound = ActiveCell.Row
            Search_Results_Listbox.AddItem (ActiveCell.Value)
        End If
        ActiveCell.Offset(1, 0).Activate
    Loop
End If

1 个答案:

答案 0 :(得分:3)

您的代码中存在许多错误 - 您正在尝试做一些非常简单的事情,因此最好回到使用Find的文档示例,尤其是 FindNext

这样的事情对你来说应该会更好:

Option Explicit

Sub Test()
    Dim searchColumn As Range, itemFound As Range
    Dim firstFindAddress As String

    Set searchColumn = ThisWorkbook.Worksheets("Sheet1").Range("A:A") 'change to employer's name column
    Set itemFound = searchColumn.find(What:="Bobs", LookAt:=xlPart, LookIn:=xlValues)

    If Not itemFound Is Nothing Then
        firstFindAddress = itemFound.Address
        Do
            Search_Results_Listbox.AddItem itemFound.Value
            Set itemFound = searchColumn.FindNext(itemFound)
        Loop While Not itemFound Is Nothing And itemFound.Address <> firstFindAddress
    End If
End Sub