如何查找包含特殊字符以及字母数字字符的单元格的行号?



我已经编写了代码来从范围("C:C"(中获取行号,其中我找到与单元格(3,3(中的值/文本匹配的值/文本。

只要 cell(3,3( 具有纯数字或纯文本,此代码就有效。但是一旦 cells(3,3( 具有特殊字符,例如~(如 MBGH3345~123(,代码就会返回错误。

运行时错误 400

Public Sub Find_Row_Number()
Dim wb As Workbook  
Dim ws As Worksheet  
Dim FindCell As Range  
Set wb = ActiveWorkbook  
Set ws = ActiveSheet  
Set FindCell = ws.Range("C:C").Find(cells(3,3))
'value to be searched is in cells(3,3)
If Not FindCell Is Nothing Then
Msgbox (FindCell.Row)
Else
Msgbox ("Error")
End If
End Sub

我不明白这如何给您带来运行时错误,但是:

波浪号~用于转义通配符,例如?*,因此如果要匹配实际的波浪号,则需要使用...另一个波浪号。

因此,例如,C3 中的MBGH3345~~123将与MBGH3345~123匹配。

如果您的搜索词可能包含波浪号字符(并且它们不用作通配符转义(,则可以执行以下操作:

Set FindCell = ws.Range("B:B").Find(Replace(Cells(3, 3).Value, "~", "~~"), _
LookIn:=xlValues, lookat:=xlWhole)

编辑- 这是我如何做你似乎想做的事情:Match比这里的Find快 -

Sub CheckData()
Dim ws As Worksheet, c As Range, v, m
Set ws = ActiveSheet
For Each c In ws.Range(ws.Range("L3"), ws.Cells(Rows.Count, "L").End(xlUp)).Cells
v = c.Value
If Len(v) > 0 Then
v = Replace(v, "~", "~~") 'escape any tilde
m = Application.Match(v, ws.Range("C:C"), 0)
If IsError(m) Then
c.Offset(0, -1).Value = "New"
'add this to the master list...
ws.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).Value = c.Value
Else
c.Offset(0, -1).Value = "Line " & m
End If
End If
Next c
End Sub

相关内容

最新更新