第55~56讲-find 方法与findNext方法

1 ·单元格区域的find方法:
Find方法在区域内查找某值的第一个单元格,注意返回找到的单元格对象
Find方法只且永远返回该区域第一个匹配的对象
·查找下一个需要使用FindNext或者FindPreous方法
2 查找就会有两个结果的可能,找到或者找不到
·如果找到自然会返回找到的单元格对象
·如果没有找到,则是该对象的初始状态Nothing什么都不是,
注意:不能使用=来判断是否Nothing-要用对象判断的特定符号is 来判断。
·请注意Nothing不是False 判断时应该使用not对象is nothing来判断单元格存在与否,而不是ls not Nothing.

’Nothing 不是一个固定态,它不等于任何的某一个值,不是精确匹配的概念不能使用=匹配
'对象 is Nothing 返回 True or False
'如果对象是Nothing is Nothing ===> True
'如果对象不是Nothing Not is Nothing ===>Ture
'典型的错误 is Not Nothing

Sub find方法()
    Dim rng As Range
    Set rng = Range("a1").CurrentRegion.Find("王新刚")
    If Not rng Is Nothing Then
        MsgBox rng.Address(0, 0)
    Else
        MsgBox "没有找到该单元格"
    End If
End Sub

3 FindNext 的用法
FindNext方法必须在find方法之后使用才有实际意义,FindNext(after:=单元格对象),代表从某一个单元格对象之后开始查找,查找条件是在Find方法中设定的查找的值。
FindNext的循环查找特性,就是当找到区域中的最后一个符合条件的单元格对象之后继续执行FindNext不会返回Nothing,而是返回区域的开头进行循环查找。
·为了避免查到重复的记录,通常需要用单元格的唯一的地址作为标识,即在查到第一个符合的对象时,把该单元格的地址记录下来。然后在循环查找中,如果发现单元格的地址与该记录的地址相同,则表示已经查找回去到第一条记录了。

'需求:王新刚的销售总额
'问题:如何查找下一个,而不是只查找第一个
'FindNext 从上向下找,FindPrevious 从下向上找
'这两个方法都是依附于Find 方法的
'FindNext(after:=单元格对象)
'FindNext 是循环查找的,永远不会返回Nothing
'FindNext 循环查找会有重复多找一次的问题,我们在实际应用中一定要意识到这一点
Sub 王新刚销售额()
    Dim rng As Range, sum As Long
    Set rng = Range("a1").CurrentRegion.Find("王新刚")
    If Not rng Is Nothing Then
        sum = sum + rng.Offset(, 4)
        Debug.Print rng.Address(0, 0)
        Set rng = Range("a1").CurrentRegion.FindNext(rng)
        Debug.Print rng.Address(0, 0)
        sum = sum + rng.Offset(, 4)
        Debug.Print sum
    End If
End Sub
Sub 王心刚销售额2()
    Dim rng As Range, area As Range, faddress As String, sum As Long
    Set area = Range("a1").CurrentRegion
    Set rng = area.Find("王心刚")
    If Not rng Is Nothing Then
        sum = rng.Offset(, 4)
        faddress = rng.Address
        Do
            Set rng = area.FindNext(rng)
            If rng.Address <> faddress Then _
                  sum = sum + rng.Offset(, 4)
           
        Loop Until rng.Address = faddress
'        sum = sum - Range(faddress).Offset(, 4)
    End If
    Debug.Print sum
End Sub

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值