EXCEL(查找特定内容的单元格)

5-1 使用Find方法查找特定信息

查询匹配的值:

Sub FindCell()
    Dim StrFind As String
    Dim rng As Range
    StrFind = InputBox(“请输入要查找的值:”)
    If Len(Trim(StrFind)) > 0 Then
        With Sheet1.Range(“A:A”)
            Set rng = .Find(What:=StrFind, _
                After:=.Cells(.Cells.Count), _
                LookIn:=xlValues, _
                LookAt:=xlWhole, _
                SearchOrder:=xlByRows, _
                SearchDirection:=xlNext, _
                MatchCase:=False)
            If Not rng Is Nothing Then
                Application.Goto rng, True
            Else
                MsgBox “没有找到匹配单元格!”
            End If
        End With
    End If
    Set rng = Nothing
End Sub

查询所有匹配的值,并标出:
Sub FindNextCell()
    Dim StrFind As String
    Dim rng As Range
    Dim FindAddress As String
    StrFind = InputBox(“请输入要查找的值:”)
    If Len(Trim(StrFind)) > 0 Then
        With Sheet1.Range(“A:A”)
            .Interior.ColorIndex = 0
            Set rng = .Find(What:=StrFind, _
                After:=.Cells(.Cells.Count), _
                LookIn:=xlValues, _
                LookAt:=xlWhole, _
                SearchOrder:=xlByRows, _
                SearchDirection:=xlNext, _
                MatchCase:=False)
            If Not rng Is Nothing Then
                FindAddress = rng.Address
                Do
                    rng.Interior.ColorIndex = 6
                    Set rng = .FindNext(rng)
                Loop While Not rng Is Nothing _
                    And rng.Address <> FindAddress
            End If
        End With
    End If
    Set rng = Nothing
End Sub
Find方法作用:在指定的单元格区域中查找包含参数指定数据的单元格,若找到符合条件的数据,则返回包含该数据的单元格;若未发现相匹配的数据,则返回Nothing。该方法返回一个Range对象,在使用该方法时,不影响选定区域或活动单元格。

Find方法的语法:

<单元格区域>.Find (What[After][LookIn][LookAt][SearchOrder][SearchDirection][MatchCase][MatchByte][SearchFormat])

<单元格区域>.Find (要查找的数据,开始查找的位置,查找的范围类型,完全匹配还是部分匹配,行列方式查找,向前向后查找,区分大小写,全角或半角,查找格式)

[参数说明]
(1)<单元格区域>,必须指定,返回一个Range对象。
(2)参数What,必需指定。代表所要查找的数据,可以为字符串、整数或者其它任何数据类型的数据。对应于“查找与替换”对话框中,“查找内容”文本框中的内容。
(3)参数After,可选。指定开始查找的位置,即从该位置所在的单元格之后向后或之前向前开始查找(也就是说,开始时不查找该位置所在的单元格,直到Find方法绕回到该单元格时,才对其内容进行查找)。所指定的位置必须是单元格区域中的单个单元格,如果未指定本参数,则将从单元格区域的左上角的单元格之后开始进行查找。

(4)参数LookIn,可选。指定查找的范围类型,可以为以下常量之一:xlValues、xlFormulas或者xlComments,默认值为xlFormulas。对应于“查找与替换”对话框中,“查找范围”下拉框中的选项。 

(5)参数LookAt,可选。可以为以下常量之一:XlWhole或者xlPart,用来指定所查找的数据是与单元格内容完全匹配还是部分匹配,默认值为xlPart。对应于“查找与替换”对话框中,“单元格匹配”复选框。
(6)参数SearchOrder,可选。用来确定如何在单元格区域中进行查找,是以行的方式(xlByRows)查找,还是以列的方式(xlByColumns)查找,默认值为xlByRows。对应于“查找与替换”对话框中,“搜索”下拉框中的选项。
(7)参数SearchDirection,可选。用来确定查找的方向,即是向前查找(XlPrevious)还是向后查找(xlNext),默认的是向后查找。
(8)参数MatchCase,可选。若该参数值为True,则在查找时区分大小写。默认值为False。对应于“查找与替换”对话框中,“区分大小写”复选框。
(9)参数MatchByter,可选。即是否区分全角或半角,在选择或安装了双字节语言时使用。若该参数为True,则双字节字符仅与双字节字符相匹配;若该参数为False,则双字节字符可匹配与其相同的单字节字符。对应于“查找与替换”对话框中,“区分全角/半角”复选框。
(10)参数SearchFormat,可选,指定一个确切类型的查找格式。对应于“查找与替换”对话框中,“格式”按钮。当设置带有相应格式的查找时,该参数值为True。
(11)在每次使用Find方法后,参数LookIn、LookAt、SearchOrder、MatchByte的设置将保存。如果下次使用本方法时,不改变或指定这些参数的值,那么该方法将使用保存的值。
在VBA中设置的这些参数将更改“查找与替换”对话框中的设置;同理,更改“查找与替换”对话框中的设置,也将同时更改已保存的值。也就是说,在编写好一段代码后,若在代码中未指定上述参数,可能在初期运行时能满足要求,但若用户在“查找与替换”对话框中更改了这些参数,它们将同时反映到程序代码中,当再次运行代码时,运行结果可能会产生差异或错误。若要避免这个问题,在每次使用时建议明确的设置这些参数。

5-2 使用Like运算符进行模式匹配查找

Sub RngLike()
    Dim rng As Range
    Dim r As Integer
    r = 1
    Sheet1.Range(“A:A”).ClearContents ‘清理sheet1中该列的内容
    For Each rng In Sheet2.Range(“A1:A40”) ‘遍历sheet2中的待查找列的内容
        If rng.Text Like “*g*” Then ‘用Like函数进行模糊查询,此处模糊查询的字段可以改为输入
            Cells(r, 1) = rng.Text ‘将查询的结果赋值给sheet1的单元格
            r = r + 1
        End If
    Next
    Set rng = Nothing
End Sub

    原文作者:hello_restart
    原文地址: https://blog.csdn.net/qq_33450463/article/details/103140813
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞