删除VBA中的特殊字符

删除VBA中的特殊字符,vba,excel,Vba,Excel,我编写了一段代码,在数据库中查找字符串并返回部分匹配给定字符串的结果- 如果“Pet”是要在数据库中搜索的字符串,则结果将是 皮特 彼得 佩特 P.Petere(我的代码不返回带点/空格(4)的值) “p.Peter”是我要搜索的字符串,它应该会给我结果 皮特 彼得 彼得 但是,到目前为止,我的代码不会返回没有点/空格(3)的值 下面是我的代码-VlookUp是带字符串的工作表,data是包含数据库的工作表。。在VlookUp中,A2包含要匹配的我的字符串,结果在第8行 Sub MyVlookU

我编写了一段代码,在数据库中查找字符串并返回部分匹配给定字符串的结果-

如果“Pet”是要在数据库中搜索的字符串,则结果将是

  • 皮特
  • 彼得
  • 佩特
  • P.Petere(我的代码不返回带点/空格(4)的值)
  • “p.Peter”是我要搜索的字符串,它应该会给我结果

  • 皮特
  • 彼得
  • 彼得
  • 但是,到目前为止,我的代码不会返回没有点/空格(3)的值

    下面是我的代码-
    VlookUp
    是带字符串的工作表,
    data
    是包含数据库的工作表。。在
    VlookUp
    中,A2包含要匹配的我的字符串,结果在第8行

    Sub MyVlookUp()
        Dim Str As String
        Dim c As Range
        Dim SrchRng As Range
    
        Sheets("VlookUp").Select
        Range("B8:C300").Select
        Selection.ClearContents
        Str = Worksheets("VlookUp").Range("A8").Value
        Worksheets("data").Activate
        Set SrchRng = ActiveSheet.Range("B1", ActiveSheet.Range("B65536").End(xlUp))
        Set c = SrchRng.Find(Str, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                Range(Cells(c.Row, 2), Cells(c.Row, 3)).Copy
                With Worksheets("VlookUp")
                .Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).PasteSpecial
                End With
    
                Set c = SrchRng.FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
         Worksheets("VlookUp").Activate
    End Sub
    
    Sub MyVlookUp()
    作为字符串的Dim Str
    调光范围
    变光SrchRng As范围
    工作表(“VlookUp”)。选择
    范围(“B8:C300”)。选择
    选择.ClearContents
    Str=工作表(“VlookUp”).范围(“A8”).值
    工作表(“数据”)。激活
    设置SrchRng=ActiveSheet.Range(“B1”,ActiveSheet.Range(“B65536”)。结束(xlUp))
    Set c=SrchRng.Find(Str,LookIn:=xlValues)
    如果不是,那么c什么都不是
    firstAddress=c.地址
    做
    范围(单元格(c行,2),单元格(c行,3))。复制
    带工作表(“VlookUp”)
    .Cells(Rows.Count,“B”).End(xlUp).偏移量(1,0).粘贴特殊
    以
    Set c=SrchRng.FindNext(c)
    循环而不是c为Nothing,c.Address为firstAddress
    如果结束
    工作表(“VlookUp”)。激活
    端接头
    
    您是否100%确定,查询
    P.Peter
    的结果应该是记录
    Pete
    ?尝试获取作为字符串子集的搜索结果(因此返回值越详尽对我越好)。但是,我的代码在给出结果时无法识别空格和特殊字符。我可以想到的一种方法是,在开始搜索之前,让代码从要搜索的字符串以及数据库值中删除空格、点等。当附加到当前代码中时,该条件可以给出结果,但是它会使返回值出错。我一直在寻找与数据库中相同的返回值。当您还指定LookAt:=xlPart时,返回值的行为是否相同?@Limak知道吗?非常感谢。您是否100%确定,查询
    P.Peter
    的结果应该是记录
    Pete
    ?尝试获取作为字符串子集的搜索结果(因此返回值越详尽,对我越有利)。但是,我的代码在给出结果时无法识别空格和特殊字符。我可以想到的一种方法是,在开始搜索之前,让代码从要搜索的字符串以及数据库值中删除空格、点等。当附加到当前代码中时,该条件可以给出结果,但是它会使返回值出错。我一直在寻找与数据库中相同的返回值。当您还指定LookAt:=xlPart时,返回值的行为是否相同?@Limak知道吗?非常感谢。