您的位置:来学习素材网 > 办公软件 > excel教程

猜你喜欢

2024-01-12 20:36
Excel-VBA查找并返回符合多个条件的值
[文章导读]Excel-VBA查找并返回符合多个条件的值

应用场景

查找符合多个条件的单元格,并复制出来

知识要点

1: Rng.find \ findnext Range.Find 方法 在区域中查找特定信息。

2:Do Loop While 查找 知道附合某个条件时终止

3:sheets.add 新建工作表

Sub 一次罗列表中三省员工的姓名() 'find循环法

Dim rng As Range, tngtemp As Range, firstaddress As String

Dim i As Byte, findcell As Range, shtname As String, sht As Worksheet

'将待查找的目标区域C2列到C列最后一个非空单元格赋予对象变量

Set rng = Range([c2], Cells(Rows.Count, "C").End(xlUp))

'将四川、湖南、湖北省转化为数组,然后循环数组每个元素,数组的基数默认为0,从0递增

For i = 0 To UBound(Array("四川省", "湖南省", "湖北省"))

'开始查找数据,按值精确查找,不区分大小写

Set rngtemp = rng.Find(what:=Array("四川省", "湖南省", "湖北省")(i), LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False)

If Not rngtemp Is Nothing Then '如果变量rngtemp不再是nothing,即找到目标值

firseaddress = rngtemp.Address '记录第一个目标的地址

'只要找到单元格的地址不等于刚刚记录的地址,就一致循环下去

'如果变量firstcell未初始化则将查找结果赋予它,否则合并变量到查找到的单元格

Do

If findcell Is Nothing Then Set findcell = rngtemp Else Set findcell = Union(findcell, rngtemp)

Set rngtemp = rng.FindNext(rngtemp)

Loop While rngtemp.Address = firstaddress

End If

Next i

If Not findcell Is Nothing Then '如果变量findcell已经初始化,就选择所有目标的正行,否则提升退出程序

findcell.EntireRow.Select

Else

MsgBox "无符合条件的数据"

Exit Sub

End If

On Error Resume Next

shtname = ActiveSheet.Name '记录当前的工作表名称

Set sht = Sheets("查询结果")

If err.Number <> 0 Then

Sheets.Add after:=Sheets(Sheets.Count)

Sheets(Sheets.Count).Name = "查询结果"

Else

Sheets(Sheets.Count).Cells.Clear

End If

Sheets(shtname).Select

Selection.Copy Sheets(Sheets.Count).[a1]

End Sub

Excel VBA

声明:本站拒绝任何弹窗、插件以及广告联盟的广告,本QQ号(254031582)只解决会员问题,素材失效问题,软件使用问题一律不回。

为广大设计朋友提供平面设计素材和教材、PSD素材、C4D模型、3DMAX模型、AE模板、矢量模板等下载

苏ICP备2023039977号-2

Copyright © 2010-2020laixuexi.cc. All Rights Reserved .