VBA学习笔记7:查找包含某内容的单元格
用途:需要在工作表内包含某内容的单元格找出来
需要将下图中包含9的单元格查找出来:
运行后效果如下:
代码如下:
Sub 通过方法查找()
'区域中查找所有包含9的数字
Dim rng As Range, rngadress$, sht1 As Worksheet, sht2 As Worksheet
Worksheets.Add(before:=Worksheets(1)).Name = "含9数据" '创建一个新表存储含9的数据
[a1] = "含9数据"
[b1] = "位置"
Set sht1 = Worksheets(1) '含9数据表
Set sht2 = Worksheets(2) '原表
With sht2.UsedRange '在原表所有范围内查找
Set rng = .Find(9, lookat:=xlPart) '模糊查找
If rng Is Nothing Then '判断是否找到,如果未找到则说明1个没有,可直接结束(否则进入循环会报错,因为address不存在)
sht1.[a2] = "无数据"
Else
rngadress = rng.Address '确定第一个的位置,为了结束循环使用
Do
Set rng = .FindNext(rng)
sht1.Range("a1045876").End(xlUp).Offset(1, 0) = rng
sht1.Range("a1048576").End(xlUp).Offset(0, 1) = rng.Address
Loop Until rngadress = rng.Address
End If
End With
End Sub
注意:
1、Range(“要查找的区域”).Find
(1)what :=要查找的内容 重要
(2)after:=从哪个位置之后开始查找,如区域为"a1:a11",after:=a4,则查找顺序a5-a11-a1-a4
(3)lookin:=查找的范围,xlvalues 查找值,xlformulas查找公式,xlcomments查找批注
(4)lookat:=模糊匹配还是精准匹配,xlwhole精确匹配,xlpart模糊匹配
(5)searchorder:=按照行查找还是列查找,xlbyrows 按行,xlbycolumns按列
(6)searchdirection:=查找的方向,xlprevious向前查找,xlnext向后查找
(7)matchcase:=是否区分大小写,true区分
(8)mathchbyte:=是否区分全角半角,true区分
(9)searchformat:=是否带格式查找,true带格式
2、对于第一个要用is nothing判断,否则若为空值,会报错
3、主要语法
with range(…)
set rng=.find(找谁,其他条件)
if rng is nothing then
… 如果没找到的操作
else
set rngaddress=rng.address
do
rng=.findnext(rng)
loop until rng.address=rngaddress '结束循环
end if
end with
版权声明:本文为weixin_45355881原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。