Excel 在单元格中查找字符串

Excel 在单元格中查找字符串,excel,excel-2007,vba,Excel,Excel 2007,Vba,我试图检查活动单元格中是否存在字符串NAME,如果存在,程序应该忽略该单元格。如果不存在,则必须删除该单元格的内容。这是我的代码: Sub Search() Range("B3").Select If ActiveCell.Find(What:="NAME") = False Then ActiveCell.Clear End Sub 我不明白为什么它不起作用。如您所见,我现在正在检查B3单元格。这是否符合您的要求 Sub Search() Range("B3").A

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

Sub Search()

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

End Sub

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

这是否符合您的要求

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

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

这是否符合您的要求

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

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

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

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

If UCase(ActiveCell.Value) <> "NAME" Then ActiveCell.ClearContents
If InStr(1, ActiveCell.Value, "NAME") = 0 Then ActiveCell.ClearContents
If InStr(1, ActiveCell.Value, "NAME", vbTextCompare) = 0 Then ActiveCell.ClearContents
在这种情况下,单元格值必须仅为
“NAME”
。诸如
“NaMe”
“NaMe”
“NaMe”
等实例将不匹配

If ActiveCell.Value <> "NAME" Then ActiveCell.ClearContents
在这种情况下,单元格值必须包含
“NAME”
。例如
命名游戏
<代码>姓氏等。像
“我的名字是Sid”
“名字里有什么”
等实例将不匹配

If ActiveCell.Value <> "NAME" Then ActiveCell.ClearContents
D) 部分匹配+不区分大小写

If UCase(ActiveCell.Value) <> "NAME" Then ActiveCell.ClearContents
If InStr(1, ActiveCell.Value, "NAME") = 0 Then ActiveCell.ClearContents
If InStr(1, ActiveCell.Value, "NAME", vbTextCompare) = 0 Then ActiveCell.ClearContents
在这种情况下,单元格值必须包含
“NAME”
案例
无关紧要。例如
名字游戏
姓氏
“我的名字是Sid”
“名字里有什么”
等等

下面是不同场景的快照

注意:如果要使用
。请查找
,然后参阅。基于上述场景,您将不得不使用

  • LookAt:=
    可以将
    xlPart
    xlother
    作为其参数之一
  • MatchCase:=
    可以将
    True
    False
    作为其参数之一

  • 这完全取决于你想找到什么样的匹配。那你想找什么?完全匹配?部分匹配?区分大小写的匹配

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

    If UCase(ActiveCell.Value) <> "NAME" Then ActiveCell.ClearContents
    
    If InStr(1, ActiveCell.Value, "NAME") = 0 Then ActiveCell.ClearContents
    
    If InStr(1, ActiveCell.Value, "NAME", vbTextCompare) = 0 Then ActiveCell.ClearContents
    
    在这种情况下,单元格值必须仅为
    “NAME”
    。诸如
    “NaMe”
    “NaMe”
    “NaMe”
    等实例将不匹配

    If ActiveCell.Value <> "NAME" Then ActiveCell.ClearContents
    
    在这种情况下,单元格值必须包含
    “NAME”
    。例如
    命名游戏
    <代码>姓氏
    等。像
    “我的名字是Sid”
    “名字里有什么”
    等实例将不匹配

    If ActiveCell.Value <> "NAME" Then ActiveCell.ClearContents
    
    D) 部分匹配+不区分大小写

    If UCase(ActiveCell.Value) <> "NAME" Then ActiveCell.ClearContents
    
    If InStr(1, ActiveCell.Value, "NAME") = 0 Then ActiveCell.ClearContents
    
    If InStr(1, ActiveCell.Value, "NAME", vbTextCompare) = 0 Then ActiveCell.ClearContents
    
    在这种情况下,单元格值必须包含
    “NAME”
    案例
    无关紧要。例如
    名字游戏
    姓氏
    “我的名字是Sid”
    “名字里有什么”
    等等

    下面是不同场景的快照

    注意:如果要使用
    。请查找
    ,然后参阅。基于上述场景,您将不得不使用

  • LookAt:=
    可以将
    xlPart
    xlother
    作为其参数之一
  • MatchCase:=
    可以将
    True
    False
    作为其参数之一

  • + 1 . 我认为用户实际上想要的是
    ClearContents
    ,而不是
    Clear
    :)+1。我认为用户实际上想要的是
    ClearContents
    ,而不是
    Clear
    :)谢谢!这帮了大忙!非常感谢。这帮了大忙!