Excel 宏以在字符串表达式列表中查找特定单词
我试图做的是引用一列以在另一列中查找关键字。例如: 我需要搜索的是C列中的数千个单元格到A列中的数百个单元格。当从C中找到字符串时,我希望它高亮显示 在这种情况下,在宏运行后,将高亮显示的唯一单元格是“Bird Cat”和“the Snake”。到目前为止,我得到的信息如下:Excel 宏以在字符串表达式列表中查找特定单词,excel,vba,Excel,Vba,我试图做的是引用一列以在另一列中查找关键字。例如: 我需要搜索的是C列中的数千个单元格到A列中的数百个单元格。当从C中找到字符串时,我希望它高亮显示 在这种情况下,在宏运行后,将高亮显示的唯一单元格是“Bird Cat”和“the Snake”。到目前为止,我得到的信息如下: Sub Test() Columns("A:A").Select Selection.Find(What:="Bird", After:=ActiveCell,
Sub Test()
Columns("A:A").Select
Selection.Find(What:="Bird", After:=ActiveCell, LookIn:=x1Formulas2, _
LookAt:=x1Part, SearchOrder:=x1ByRows, SearchDirection:=x1Next, _
MatchCase:=False, SearchFormulas:=False).Activate
Selection.Style = "Good"
Cells.FindNext(After:=ActiveCell).Activate
End Sub
在某一点上,我确实有一个Do,直到代码中的IsEmpty(ActiveCell)…循环,但我认为这不起作用
我还不熟悉VBA编码,所以一般来说,任何输入都是受欢迎的。此代码使用Find和FindNext查找单个单词并标记找到它的所有单元格
Sub MarkMatches(ByVal Crit As String)
' 085
Dim Rng As Range ' range to search
Dim Fnd As Range ' cell where match was found
Dim FirstFnd As Long ' row where a match was first found
Dim Arr As Variant ' Rng.Value (for execution speed)
With Worksheets("Sheet2") ' change to suit
' search in column A, starting from row 1
Set Rng = .Range(.Cells(1, "A"), _
.Cells(.Rows.Count, "A").End(xlUp))
End With
With Rng
Arr = .Value
.Interior.Pattern = xlNone ' clear existing colouring
Set Fnd = .Find(Crit, .Cells(.Cells.Count), _
xlValues, xlPart, MatchCase:=False)
If Not Fnd Is Nothing Then
FirstFnd = Fnd.Row
Do
' "1" refers to column A here:-
Arr(Fnd.Row, 1) = " " & Arr(Fnd.Row, 1) & " "
' exclude partial matches, like "catalog" matching "cat"
If InStr(1, Arr(Fnd.Row, 1), " " & Crit & " ", vbTextCompare) Then
Fnd.Interior.Color = vbYellow ' mark found match
End If
Set Fnd = .FindNext(Fnd)
If Fnd Is Nothing Then Exit Do
Loop While Fnd.Row > FirstFnd
End If
End With
End Sub
您可以使用下面给出的过程调用上述子过程
Sub Macro1()
MarkMatches "bird"
End Sub
不指定单词,您可以指定单元格引用,如“MarkMatches(Cells(2,“a”).Value”。如果希望搜索单词列表,可以将此调用放入循环中,但首先需要解决如何区分标记的单词,因为它们符合一个或另一个条件
程序MarkMatches包含一行
Rng.Interior.Pattern=xlNone
,该行删除所有以前的突出显示。这行的操作可以移动到调用程序,但您当前的问题没有充分说明您打算实施更好的策略。您有一堆x1
前缀除了xl
是否有理由不在没有VBA的情况下使用条件格式来实现这一点?()如果C中有“蛋糕”,a中有“煎饼”怎么办?如果C中有“蛋糕”,a中有“煎饼”怎么办?我不担心这一点。在实际的数据集中,a列将是“程序的[userID]设置项”列c将是[userID]。它将是一个字母,然后是一个由5个数字组成的字符串。我正在尝试搜索我可能拥有的任何票证与系统,以查看谁可能被配置。我只是将其放在上面,但n实际的数据集列a将是“程序的[userID]的配置项”,列c将是[userID]。这将是一个字母,然后是一个由5个数字组成的字符串。我所做的是从系统中提取所有用户ID。然后,我将所有ID放入Excel文档中,其中包含该系统的ServiceNow票证的票证号/摘要。我有大约10000张票证要在15个不同的系统中进行检查。我可以对数据进行排序,以进行筛选该系统并将所有活跃用户拉到该系统上,但除此之外,我无法自动调整目标帖子,是吗?:-)我不认为你的类比很糟糕。因此,我的代码很有用。您可以输入用户ID并突出显示所有关联的票号。也许你想扩展它来创建一个过滤列表,但这将是论坛上另一个问题的主题,以及如何进一步自动化流程的问题。你需要找到空间来描述这个过程,我们这里没有。