excel在工作表的指定列范围内搜索数据 将其替换并复制到另一个工作表
这里的应用场景如下:
工作表Sheet1中存储有数据。现在,我想在此工作表的o列到t列中搜索指定的数据。如果找到,我会将数据所在的行复制到工作表Sheet2。
用户输入要在一个级别中搜索的数据值,然后自动将所有满足前面条件的行复制到工作表Sheet2中。"
首先,使用用户预先设计的输入第一步,如下图1所示。
图1
在用户的常规模块中编写代码:
私有subcdok _ click()
模糊的练习册。
变暗线
模糊搜索范围
模糊的发现。
将rngFoundCells调暗为范围。
将rngFoundCell调暗为范围。
模糊的线条。
申请。屏幕更新=假
作业工作表第1页。
Set wks=工作表(“Sheet1”)。
还有几周。
工作表中的最后一个数据行。
lngRow=。范围(“A”&行。计数)。结束(xlUp)。排
要找到的单元格区域。
设置RNG搜索=。范围(“O2:t”& ln grow)。
“找到数据文本值。
用户在文本目录中输入。
what=“*”& me . txt search . text和“*”。
调用FindAll函数查找数据值。
存储所有符合条件的单元格。
设置rngfoundscells=find all(search range:=RNG search,_。
查找内容:=查找内容,_
查找:=xlValues,_
look at:=Xl整体,_
SearchOrder:=xlByColumns,_
匹配大小写:=false,_
begin with:=VBnullString,_
EndsWith:=vbNullString,_
beginedcompare:=vbTextCompare)
如果找不到,则称为消息。
如果rngFoundCells什么都没有,那么。
转到发送信息。
以防万一
清空工作表第2页。
表(“表2”).细胞。清楚的
获取数据单元格所在的行,并将其复制到工作表Sheet2。
对于rngFoundCell中的每个rngFoundCell。
lngCurRow=Val(Mid(RNgfoundscell。地址4,Len(RNgfoundscell。地址))
范围(“a”& lngcurrenw和”:z”& lngcurrenw)。
表(“表2”).单元格(行。计数,1)。结束(xlUp)。偏移量(1)
下一个rngFoundCell。
最后有
申请。屏幕更新=真
卸载我。
儿童出口
发送信息:
MsgBox“未找到数据”,“搜索”。
结束子级
代码中使用的FindAll函数代码如下:
“自定义函数”
获取所有符合条件的细胞。
函数FindAll(SearchRange,AsRange,_)。
发现什么是变体,_
可选的查找是XlFindLookIn=xlValues,_
Xl LookAt=可选查看Xl整体,_
可选搜索顺序asxlsearchorder=xlbyrows,_
可选的MatchCase是布尔值=False,_。
可选,以as string=vbnullstring开头,_
可选结束,字符串=vbNullString,_
可选的beginendcompare asvbcompare方法=vbtextcompare)作为范围。
将FoundCell调暗为范围。
第一次变暗发现为范围。
DimLastCell作为范围。
将结果范围调暗为范围。
将XLookAt调暗为Xlookat。
隐含为布尔值。
将CompMode调暗为VbCompareMethod。
将区域变暗为范围。
dim MaxRow只需要很长。
Dim MaxCol刚刚。
Dim BeginB是布尔值。
将EndB调暗为布尔值。
CompMode=BeginEndCompare
如果BeginsWith vbNullString或EndsWith vbNullString,则。
XLookAt=xlPart
其他的
XLookAt=LookAt
以防万一
对于搜索范围中的每个区域。区域,
有一个区域
如果。单元格(. Cells.Count)。行MaxRow然后。
MaxRow=。单元格(. Cells.Count)。排
以防万一
如果。细胞(. cells.count)。那么columnmaxcol。
MaxCol=。单元格(. Cells.Count)。圆柱
以防万一
最后有
下一个区域。
set last cell=search range . worksheet . cells(max row,MaxCol)。
出现错误时转到0。
设置found cell=search range . find(what:=find what,_。
之后:=LastCell,_
LOng:=LOng,_
LookAt:=XLookAt,_
搜索顺序:=搜索顺序,_
MatchCase:=MatchCase)
如果没有找到,细胞什么都没有。
设置FirstFound=FoundCell。
犯错。
Include=错误。
如果beginswith=vbnullstring,endswith=vbnullstring,则。
Include=正确。
其他的
If BeginsWith vbNullString,然后。
If rcomp(左(foundcell。text,Len(begin with)),以,BeginEndCompare)=0开始,然后。
Include=正确。
以防万一
以防万一
如果以vbNullString结束,则。
如果是右(找到单元格。文本,Len(EndsWith)),EndsWith,BeginEndCompare)=0。
Include=正确。
以防万一
以防万一
以防万一
如果包含=真,那么
如果结果范围无效,则。
设置结果范围=FoundCell。
其他的
Set resultrange=application。union (resultrange,FoundCell)。
以防万一
以防万一
设置FoundCell=SearchRange。FindNext(在:=FoundCell之后)。
如果(FoundCell什么都没有),那么。
别做了。
以防万一
If (foundcell。地址=firstfound。地址)那么。
别做了。
以防万一
传播
以防万一
设置FindAll=ResultRange。
结束功能
这是一个通用函数,可以直接使用。它可用于查找并返回指定区域中符合条件的所有单元格。
版权声明:excel在工作表的指定列范围内搜索数据 将其替换并复制到另一个工作表是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。