VBA学习笔记7:查找包含某内容的单元格

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版权协议,转载请附上原文出处链接和本声明。