宝哥软件园

excel在工作表的指定列范围内搜索数据 将其替换并复制到另一个工作表

编辑:宝哥软件园 来源:互联网 时间:2021-09-22

这里的应用场景如下:

工作表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。

结束功能

这是一个通用函数,可以直接使用。它可用于查找并返回指定区域中符合条件的所有单元格。

更多资讯
游戏推荐
更多+