在 Excel 中,Find 未找到字符串中的完全匹配项

在 Excel 中,Find 未找到字符串中的完全匹配项

我在 vba 中编写了一个代码,如果我在单元格中输入一个字符串,B8那么它将匹配范围为 的其他工作表A6:A500。我发现的文本是Carlos Leather Fashion*Lefties*Alex*Mid Blue。并且有一个字符串A6Carlos Leather Fashions*Lefties*Alex*Mid Blue。因此,它不匹配,因为时尚缩写中有一个额外的“s”。但我的 vba 代码在这种情况下也显示已找到。这是我的代码 -

Dim helper As String
    
helper = Cells(8, 2).Value
    
Dim paymentStatusSheet As Worksheet
Set paymentStatusSheet = Worksheets("Payment-Summary")
'--------------------------------------------------------------Set the Payment status worksheet
    
If paymentStatusSheet.Range("A6:A500").Find(What:=helper, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
    
    MsgBox "Not Found"
    
Else
    MsgBox "Found"
    
End If

请帮忙!

答案1

问题出现的原因在于Range.Find()将星号视为通配符,它​​匹配任何字符。因此*搜索字符串匹配Fashion*Fashions*

一种快速解决方案是转义搜索模式。Excel 将~*搜索字符串视为单个星号字符。因此,针对您的特定用例的快速修复方法是:

Dim helper As String
    
helper = Cells(8, 2).Value
helper = Replace(helper, "*", "~*")  '<-- Note this new line
    
Dim paymentStatusSheet As Worksheet
Set paymentStatusSheet = Worksheets("Payment-Summary")
'--------------------------------------------------------------Set the Payment status worksheet
    
If paymentStatusSheet.Range("A6:A500").Find(What:=helper, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
    
    MsgBox "Not Found"
    
Else
    MsgBox "Found"
    
End If

这里,我没有考虑其他通配符,例如?~。如果您在搜索字符串中预见到它们,则可能需要对其进行转义。

相关内容