龙空技术网

Excel VBA学习笔记:查找单元格内容,单元格的FIND方法(一)

简单学学EXCEL 744

前言:

如今朋友们对“vbnet判断excel单元格为空”大约比较重视,各位老铁们都想要了解一些“vbnet判断excel单元格为空”的相关资讯。那么小编同时在网摘上汇集了一些关于“vbnet判断excel单元格为空””的相关资讯,希望咱们能喜欢,咱们快快来学习一下吧!

FIND的语法结构图:

Range().Find(......):(1) 第1个参数 What 必选参数,需要查找的内容;(2) 第2参数After 可选参数,从哪个单元格(Find前面定义的区域中的单元格)之后开始找;例:range(“B:B”).Find(“what”,[B5]);语句意思:在B列中,B5之后的单元格中查找);(3) 第3参数 LookIn 可选参数,xlvalues在“单元格的值”中找(默认项),xlformulas在“单元格里的公式”中找(单元格中填充的是公式才会),xlcomments在单元格里的批注中找;(4) 第4参数 LookAt 可选项,xlpart部分匹配(简写2)(默认项),xlwhole 全区配(简写1)。(注:第3、第4参数的默认项并不是固定的,省略不写的话,默认为前一次Find语句中的参数。就是前一次的Find语句改变了此2项,这次Find的这2项参数与之前同)

(5) 第5参数SearchOrder 可选参数,xlByRows按行方向一个单元格一个单元格的找下去,xlByColumns 按列方向。(6) 第6参数SearchDirection 可选参数,xlNext 查找方向向后查找(默认项) ,xlPrevious查找方向向前查找。(7) 第7参数 MatchCase 可选参数,True 为区分大小写,False不区分(默认项)。(8) 第8参数MatchByte 很少用。(9) 第9参数SearchFormat ,True表示按定义的单元格 格式进行查找,False 为默认值。

如图示例:找到一个单元格【B7】。Find “方法”执行后返回一个单元格对象,所以用Set 变量=Find “方法” 。不用Set ,语句也是可以执行的,但是没有任何东西显示出来,这样就没有意义了,不像Sort,Replace方法单元格会变化。所以需要用fn变量代替Find “方法”返回的对象,fn.Address就会显示单元格的地址。

示例二、Set fn = Range("D2:D9").Find("王", LookIn:=xlComments),语句作用:在D2到D9单元格的批注中查找“王”字符。也可写作:Set fn = Range("D2:D9").Find("王", ,xlComments) ,这种写法要搞清楚每个参数的位序,中间的逗号不可以省。

示例三:如图,找出未注册人员

For i = 2 To 19Set fn = Range("B2:B11").Find(Cells(i, "A"), lookat:=xlWhole)If fn Is Nothing Then     '没找到就执行   Cells(i, "A").Copy: Cells(m, "C").PasteSpecial xlPasteValues  '将没找到的A列单元格复制到C列   m = m + 1End IfNext i

把A列中的每个数据用FIND到B列中查找一下,返回值是Nothing就是没找到,就复制到C列。Set fn = Range("B2:B11").Find(Cells(i, "A"), lookat:=xlWhole) ;B列区域相当于被查找区域,A列的单元格为需要找的数据。

但FIND 只要找到1次后,就停止查找动作了。如果要查找数据出现了几次怎么操作呢? after:=参数的作用就用上了。如下图:

Set fn = Range("B2:B12").Find("王曼",  lookat:=xlWhole)   '找到第1个"王曼"m = Mid(fn.Address(0, 0), 2, 2)        '从单元格地址中取出行号,也就是[B4]的4n=Val(m)   '将m转换为数字  计数=1Do      'Do 循环语句  Set fn = Range("B2:B12").Find("王曼", Range("B" & n), lookat:=xlWhole)  n = Mid(fn.Address(0, 0), 2, 2)  计数 = 计数 + 1Loop Until Val(n)=Val(m)

首先 找到第1个"王曼"在哪?得到【B4】,然后从 B4开始再找"王曼",Find找到[B12]的"王曼"之后,再定位从[B12]开始找时,FIND会回头找(不管从哪开始都要把区域遍历才算结束,而不是只找到区域结尾)。所以再返回[B4地址时,就认为找完了,N=M值时循环结束。

标签: #vbnet判断excel单元格为空 #vb 判断单元格为空 #vb判断单元格是否为空