Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 7063|回复: 3

[已解决]如何使用find方法实现循环查找

[复制链接]
发表于 2012-3-28 23:35 | 显示全部楼层 |阅读模式
   用find在目标区域中查找目标时,只会找到第一个目标,如何实现循环查找,就是说可以多个符合条件的目标
最佳答案
2012-3-29 08:31
本帖最后由 adders 于 2012-3-28 19:34 编辑

微软自带的两个例子:

1) 在Worksheets(1)中的A1:A500范围内寻找数值为2的单元格,如找到则改值为5,注意这里用的FindNext来寻找下一个目标:

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 And c.Address <> firstAddress   
    End If
End With

2) 用FindPrevious来寻找上一个目标(运行前确认在B列至少有两个单元格的文本值是"Phoenix")

Set fc = Worksheets("Sheet1").Columns("B").Find(what:="Phoenix")   
     MsgBox "第一个Phoenix在单元格 " & fc.Address
Set fc = Worksheets("Sheet1").Columns("B").FindNext(after:=fc)   
     MsgBox "下一个Phoenix在单元格 " & fc.Address
Set fc = Worksheets("Sheet1").Columns("B").FindPrevious(after:=fc)   
     MsgBox "上一个Phoenix在单元格 " & fc.Address
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-3-29 08:31 | 显示全部楼层    本楼为最佳答案   
本帖最后由 adders 于 2012-3-28 19:34 编辑

微软自带的两个例子:

1) 在Worksheets(1)中的A1:A500范围内寻找数值为2的单元格,如找到则改值为5,注意这里用的FindNext来寻找下一个目标:

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 And c.Address <> firstAddress   
    End If
End With

2) 用FindPrevious来寻找上一个目标(运行前确认在B列至少有两个单元格的文本值是"Phoenix")

Set fc = Worksheets("Sheet1").Columns("B").Find(what:="Phoenix")   
     MsgBox "第一个Phoenix在单元格 " & fc.Address
Set fc = Worksheets("Sheet1").Columns("B").FindNext(after:=fc)   
     MsgBox "下一个Phoenix在单元格 " & fc.Address
Set fc = Worksheets("Sheet1").Columns("B").FindPrevious(after:=fc)   
     MsgBox "上一个Phoenix在单元格 " & fc.Address
回复

使用道具 举报

发表于 2012-3-29 08:04 | 显示全部楼层
For Each a In [A1:A9]
Set rng = [b:b].Find(a, , , 1)
NEXT

循环所有目标然后逐一查找
回复

使用道具 举报

发表于 2012-7-10 11:38 | 显示全部楼层
adders 发表于 2012-3-29 08:31
微软自带的两个例子:

1) 在Worksheets(1)中的A1:A500范围内寻找数值为2的单元格,如找到则改值为5,注意这 ...

学习                                            
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-17 20:05 , Processed in 0.296980 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表