excel选中查找结果所在行,编写一个宏命令
我有一大批客户资料要整理,所以需要用到一个方便的命令。比如我在EXCEL中查找一个关键词,使用该宏命令后。所有含有该关键词的行都可以选中。关键词会出现在任意的一列中,故不...
我有一大批客户资料要整理,所以需要用到一个方便的命令。比如我在EXCEL中查找一个关键词,使用该宏命令后。所有含有该关键词的行都可以选中。
关键词会出现在任意的一列中,故不能用排列筛选。 展开
关键词会出现在任意的一列中,故不能用排列筛选。 展开
6个回答
展开全部
试试这个:
Sub SelectAllRowsContainingKeyword(strKeyword As String)
Dim oRangeCombined As Range
Dim oRangeFound As Range
Dim strFirstAddress As String
Set oRangeFound = Cells.Find(strKeyword)
If Not oRangeFound Is Nothing Then
Set oRangeCombined = oRangeFound
strFirstAddress = oRangeFound.Address
Do
Set oRangeCombined = Union(oRangeCombined, oRangeFound)
Set oRangeFound = Cells.FindNext(oRangeFound)
Loop While Not oRangeFound Is Nothing And oRangeFound.Address <> strFirstAddress
End If
If Not oRangeCombined Is Nothing Then
oRangeCombined.EntireRow.Select
End If
End Sub
调用时传入关键字即可,如:
Sub MyMacro
SelectAllRowsContainingKeyword "要查找的关键字"
End Sub
Sub SelectAllRowsContainingKeyword(strKeyword As String)
Dim oRangeCombined As Range
Dim oRangeFound As Range
Dim strFirstAddress As String
Set oRangeFound = Cells.Find(strKeyword)
If Not oRangeFound Is Nothing Then
Set oRangeCombined = oRangeFound
strFirstAddress = oRangeFound.Address
Do
Set oRangeCombined = Union(oRangeCombined, oRangeFound)
Set oRangeFound = Cells.FindNext(oRangeFound)
Loop While Not oRangeFound Is Nothing And oRangeFound.Address <> strFirstAddress
End If
If Not oRangeCombined Is Nothing Then
oRangeCombined.EntireRow.Select
End If
End Sub
调用时传入关键字即可,如:
Sub MyMacro
SelectAllRowsContainingKeyword "要查找的关键字"
End Sub
展开全部
我以前用过的程序的一部分,改给你。
Function 变色(b as string)
Cells.Interior.ColorIndex = 0
i = 0
b = "你要的词"
CC:
Set a = Cells.Find(b, LookAt:=2)
AA:
If a Is Nothing Then
Else
Rows(a.Row).Interior.ColorIndex = 6
a.Interior.ColorIndex = 8
i = i + 1
Set a = [g:g].FindNext(a)
If a.Interior.ColorIndex = 8 Then GoTo bb
GoTo AA
End If
bb:
msgbox "找到" & i &"个" & b
End Function
Function 变色(b as string)
Cells.Interior.ColorIndex = 0
i = 0
b = "你要的词"
CC:
Set a = Cells.Find(b, LookAt:=2)
AA:
If a Is Nothing Then
Else
Rows(a.Row).Interior.ColorIndex = 6
a.Interior.ColorIndex = 8
i = i + 1
Set a = [g:g].FindNext(a)
If a.Interior.ColorIndex = 8 Then GoTo bb
GoTo AA
End If
bb:
msgbox "找到" & i &"个" & b
End Function
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议用操作法加VBA混合使用比较好
直接用查找,查找全部(Alt + I)、选定全部(Ctrl + A)、关闭查找对话框(Esc),然后才用宏
Selection.EntireRow.Select
直接用查找,查找全部(Alt + I)、选定全部(Ctrl + A)、关闭查找对话框(Esc),然后才用宏
Selection.EntireRow.Select
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
若关键词是在同一列中,可以直接用筛选呀!相信你这个会用吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请问一个问题, 关键词可能会在任意一个列或几列上吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
描述具体点,可以实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询