在单元格中查找字符串

时间:2014-01-07 01:40:21

标签: excel excel-vba excel-2007 vba

我正在尝试检查字符串NAME是否存在于活动单元格中,如果存在,则程序应忽略该单元格。如果不存在,则必须删除该单元格的内容。这是我的代码:

Sub Search()

    Range("B3").Select
    If ActiveCell.Find(What:="NAME") = False Then ActiveCell.Clear

End Sub

我不明白为什么它不起作用。如您所见,我现在只是检查B3单元格。

2 个答案:

答案 0 :(得分:3)

这一切都取决于你想要找到的匹配类型。那么你想找到什么?完全匹配?部分匹配?区分大小写的匹配?

A)完全匹配+区分大小写

在这种情况下,单元格值必须只是"NAME"" NaMe""NAme""name"等实例将不会匹配。

If ActiveCell.Value <> "NAME" Then ActiveCell.ClearContents

B)完全匹配+不区分大小写

If UCase(ActiveCell.Value) <> "NAME" Then ActiveCell.ClearContents

If LCase(ActiveCell.Value) <> "name" Then ActiveCell.ClearContents

在这种情况下,单元格值必须为"NAME""NaMe"等。" NaMe""Surname"等实例不会匹配。

C)部分匹配+区分大小写

If InStr(1, ActiveCell.Value, "NAME") = 0 Then ActiveCell.ClearContents

在这种情况下,单元格值必须包含"NAME"。例如NAME GAMESURNAME"My Name is Sid""What's in a NAMe"等实例将无法匹配。

D)部分匹配+不区分大小写

If InStr(1, ActiveCell.Value, "NAME", vbTextCompare) = 0 Then ActiveCell.ClearContents

在这种情况下,单元格值必须包含"NAME"Case并不重要。例如NAME GAMESURNAme"My Name is Sid""What's in a NAMe"等。

以下是不同情景的快照。

enter image description here

注意:如果您想使用.FIND,请参阅THIS LINK。基于上述场景,您必须使用

  1. LookAt:=可以将xlPartxlWhole作为其中一个参数。
  2. MatchCase:=可以将TrueFalse作为其中一个参数。

答案 1 :(得分:2)

这是否符合您的要求?:

Sub Search()
   Range("B3").Activate
    If ActiveCell.Value = "NAME" = False Then ActiveCell.Clear
End Sub  

注意,区分大小写并查找整个单元格的内容而不是单元格中的字符串。