在本文中,我们将使用Range对象的find方法突出显示包含与搜索词相似的值的单元格。

此示例的原始数据包括公司名称,员工ID和员工名称。我们有来自不同公司的原始数据。

在此示例中,我们要查找并突出显示与单元格I8中的特定已定义公司名称匹配的单元格。

ArrowRawData

要突出显示具有特定公司名称的单元格,请在单元格I8中输入公司名称,然后单击“提交”按钮。为“提交”按钮分配了“ HighlightMatchingResult”宏。

ArrowCallingFunction

“ HighlightMatchingResult”宏将以黄色突出显示包含匹配的公司名称的单元格。

ArrowOutput

逻辑解释

在此示例中,我们创建了一个自定义函数“ FindRange”和一个宏“ HighlightMatchingResult”。

自定义函数“ FindRange”将创建一个范围,其中所有单元格的值都与搜索到的公司名称相似。

“ HighlightMatchingResult”宏将调用自定义函数,并以黄色突出显示自定义函数返回的范围。

代码说明

SearchRange.Find(What:= FindItem)

上面的代码用于查找包含类似于FindItem的值的单元格。

联合(FindRange,MatchingRange)

上面的代码用于将两个范围合并为一个范围。

SearchRange.FindNext(MatchingRange)

上面的代码用于查找包含类似于FindItem的值的下一个单元格。

请遵循以下代码

Option Explicit

Function FindRange(FindItem As Variant, SearchRange As Range) As Range

'Declaring variables

Dim MatchingRange As Range

Dim FirstAddress As String

With SearchRange



'Finding the range whose value match with FindItem

Set MatchingRange = .Find(What:=FindItem)



'Checking whether any match exist

If Not MatchingRange Is Nothing Then



Set FindRange = MatchingRange

'Getting the address of first matching range

FirstAddress = MatchingRange.Address



Do

'Union of all the ranges whose value match with FindItem

Set FindRange = Union(FindRange, MatchingRange)

'Finding the next range whose value match with FindItem

Set MatchingRange = .FindNext(MatchingRange)

Loop While MatchingRange.Address <> FirstAddress

End If



End With

End Function

Sub HighlightMatchingResult()

'Declaring variables

Dim MappingRange As Range

Dim UserInput As String

'Getting value input by user from cell I8

UserInput = Range("I8").Value

'Calling FindRange custom function

Set MappingRange = FindRange(UserInput, ActiveSheet.Columns("A"))

'Highlighting the mapped range with Yellow color

MappingRange.Interior.Color = RGB(255, 255, 0)

End Sub

如果您喜欢此博客,请在Facebook和Facebook上与您的朋友分享。

我们希望收到您的来信,请让我们知道如何改善我们的工作并为您做得更好。写信给我们[email protected]