Range.Find 方法 (Excel)

在区域中查找特定信息。

注意

有兴趣开发跨多个平台扩展 Office 体验的解决方案吗? 查看新的 Office 外接程序模型。 与VSTO外接程序和解决方案相比,Office外接程序占用的空间较小,您可以使用几乎任何Web编程技术(例如HTML5,JavaScript,CSS3和XML)来构建它们。

语法

表达式.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

expression 一个表示 Range 对象的变量。

参数

名称 必需/可选 数据类型 说明
What 必需 Variant 要搜索的数据。 可为字符串或任意 Microsoft Excel 数据类型。
After 可选 Variant 要在其后开始搜索的单元格。 从用户界面搜索时,这对应于活动单元格的位置。

请注意,After 必须是区域内的单个单元格。 请注意,搜索在此单元格之后开始;在方法回绕到此单元格之前,不会搜索指定的单元格。

如果未指定此参数,搜索将在区域左上角的单元格后面开始。
LookIn 可选 Variant 可以是下列 XlFindLookIn 常量之一:xlFormulasxlValuesxlCommentsxlCommentsThreaded
LookAt 可选 Variant 可以是下列 XlLookAt 常量之一:xlWholexlPart
SearchOrder 可选 Variant 可以是以下 XlSearchOrder 常量之一:xlByRowsxlByColumns
SearchDirection 可选 Variant 可以是以下 XlSearchDirection 常量之一: xlNextxlPrevious
MatchCase 可选 Variant 如果为 True,则搜索区分大小写。 默认值为 False
MatchByte 可选 Variant 仅在选择或安装了双字节语言支持时使用。 如果为 True,则双字节字符仅匹配双字节字符。 如果为 False,则双字节字符匹配其单字节等效字符。
SearchFormat 可选 Variant 搜索格式。

返回值

一个 Range 对象,它代表在其中找到该信息的第一个单元格。

注解

如果未发现匹配项,此方法返回 NothingFind 方法不会影响所选内容或活动单元格。

每次使用此方法时,都会保存 LookInLookAtSearchOrderMatchByte 的设置。 如果在下次调用此方法时不指定这些参数的值,则使用保存的值。 设置这些参数会更改“查找”对话框中的设置,更改“查找”对话框中的设置会更改省略参数时使用的已保存值。 为避免出现问题,请在每次使用此方法时显式设置这些参数。

使用 FindNextFindPrevious 方法可重复搜索。

当搜索到达指定的搜索区域末尾时,它会绕到该区域开头位置。 若要在发生此绕回时停止搜索,请保存第一个找到的单元格的地址,然后针对此保存的地址测试每个连续找到的单元格地址。

若要查找与更复杂模式匹配的单元格,请将 For Each...Next 语句与 Like 运算符结合使用。 例如,以下代码搜索区域 A1:C5 中使用其名称以字母 Cour 开头的字体的所有单元格。 Microsoft Excel 找到一个匹配项时,会将字体更改为 Times New Roman。

For Each c In [A1:C5] If c.Font.Name Like "Cour*" Then c.Font.Name = "Times New Roman" End If Next`

示例

此示例在第一个工作表的单元格区域 A1:A500 中查找包含值 2 的所有单元格,并将整个单元格的值更改为 5。 也就是说,值 1234 和 99299 均包含2,并且单元格的值将变为 5。

Sub FindValue()
    
    Dim c As Range
    Dim firstAddress As String

    With Worksheets(1).Range("A1:A500") 
        Set c = .Find(2, lookin:=xlValues) 
        If Not c Is Nothing Then 
            firstAddress = c.Address 
            Do 
                c.Value = 5 
                Set c = .FindNext(c) 
            Loop While Not c Is Nothing
        End If 
    End With
    
End Sub

本示例在第一个工作表的单元格区域 A1:A500 中查找包含子字符串 “abc” 的所有单元格,并将这些单元格的值替换为 “xyz”。

Sub FindString()

    Dim c As Range
    Dim firstAddress As String

    With Worksheets(1).Range("A1:A500")
        Set c = .Find("abc", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.Value = Replace(c.Value, "abc", "xyz")
                Set c = .FindNext(c)
            Loop While Not c Is Nothing
        End If
    End With

End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。