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

这里的应用场景如下:
“ 在工作表 Sheet1 中存储着数据,现在想要在该工作表的第O 列至第T 列中搜索指定的数据,如果发现,则将数据所在行复制到工作表Sheet2 中 。
用户在一个一级中输入要搜索的数据值,然后自动将满足前面条件的所有行复制到工作表Sheet2 中 。”
首先,使用用户预先设计的输入第一步,如下图 1 所示 。

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

文章插图
图 1
在该用户常规模块中编写代码:
私人Sub cmdOK_Click()
昏暗的工作簿
调光行
昏暗搜索范围
昏暗的发现
Dim rngFoundCells作为范围
Dim rngFoundCell作为范围
昏暗的行
Application.ScreenUpdating = False
‘ 赋值工作表Sheet1
设置wks =工作表(“ Sheet1”)
有星期
‘ 工作表中的最后一个数据行
lngRow = .Range(“ A”&Rows.Count).End(xlUp).Row
‘ 被查找的单元格区域
设置rngSearch = .Range(“ O2:T”&lngRow)
“ 查找的数据文本值
‘ 由用户在文本目录输入
FindWhat =“ *”&Me.txtSearch.Text和“ *”
‘ 调用FindAll 函数查找数据值
‘ 存储满足条件的所有单元格
设置rngFoundCells = FindAll(SearchRange:= rngSearch,_
FindWhat:= FindWhat,_
LookIn:= xlValues,_
LookAt:= xlWhole,_
SearchOrder:= xlByColumns,_
MatchCase:=假,_
BeginsWith:= vbNullString,_
EndsWith:= vbNullString,_
BeginEndCompare:= vbTextCompare)
‘ 如果没有找到则称为消息
如果rngFoundCells什么都没有,那么
转到SendInfo
万一
‘ 清空工作表Sheet2
Sheets(“ Sheet2”) 。Cells.Clear
‘ 获取数据单元格所在的行并复制到工作表Sheet2
对于rngFoundCells中的每个rngFoundCell
lngCurRow = Val(Mid(rngFoundCell.Address,4,Len(rngFoundCell.Address)))
范围(“ A”&lngCurRow和“:Z”&lngCurRow) 。
Sheets(“ Sheet2”) 。Cells(Rows.Count,1).End(xlUp).Offset(1)
下一个rngFoundCell
结束于
Application.ScreenUpdating = True
卸载我
退出子
SendInfo:
MsgBox“ 没有找到数据 ”,,“ 查找 ”
结束子
代码中使用的 FindAll 函数代码如下:
‘ 自定义函数
‘ 获取满足条件的所有单元格
函数FindAll(SearchRange AsRange,_
【excel搜索工作表指定列范围中的数据替换其复制到另一个工作表中】FindWhat作为变体,_
可选的LookIn为XlFindLookIn = xlValues,_
XlLookAt = xlWhole的可选LookAt,_
可选SearchOrder AsXlSearchOrder = xlByRows,_
可选MatchCase为布尔值= False,_
可选的BeginsWith As String = vbNullString,_
可选的EndsWith As String = vbNullString,_
可选的BeginEndCompare AsVbCompareMethod = vbTextCompare)作为范围
昏暗FoundCell作为范围
昏暗的FirstFound作为范围
DimLastCell作为范围
昏暗ResultRange作为范围
昏暗的XLookAt作为XlLookAt
暗含为布尔
Dim CompMode作为VbCompareMethod
昏暗区域作为范围
昏暗的MaxRow只要长
昏暗的MaxCol只要
昏暗的BeginB为布尔
将EndB昏暗为布尔值
CompMode = BeginEndCompare
如果BeginsWith <> vbNullString或EndsWith <> vbNullString然后
XLookAt = xlPart
其他
XLookAt = LookAt
万一
对于SearchRange.Areas中的每个区域
有面积
如果.Cells(.Cells.Count).Row> MaxRow然后
MaxRow = .Cells(.Cells.Count).Row
万一

推荐阅读