Trong bài này, chúng ta sẽ sử dụng phương thức find của đối tượng Range để đánh dấu ô chứa giá trị tương tự như các từ tìm kiếm.

Dữ liệu thô cho ví dụ này bao gồm tên công ty, id nhân viên và tên nhân viên. Chúng tôi có dữ liệu thô từ các công ty khác nhau.

Trong ví dụ này, chúng tôi muốn tìm và đánh dấu ô phù hợp với tên công ty được xác định cụ thể trong ô I8.

ArrowRawData

Để đánh dấu các ô có tên công ty cụ thể, hãy nhập tên công ty vào ô I8 và nhấp vào nút “Gửi”. Nút “Gửi” được chỉ định macro “HighlightMatchingResult”.

ArrowCallingFunction

Macro “HighlightMatchingResult” sẽ đánh dấu ô có chứa tên công ty phù hợp với màu Vàng.

ArrowOutput

Giải thích logic

Trong ví dụ này, chúng tôi đã tạo một hàm tùy chỉnh “FindRange” và một macro “HighlightMatchingResult”.

Hàm tùy chỉnh “FindRange” sẽ tạo một phạm vi với tất cả các ô có chứa giá trị tương tự như tên công ty được tìm kiếm.

Macro “HighlightMatchingResult” sẽ gọi hàm tùy chỉnh và đánh dấu phạm vi được trả về bởi hàm tùy chỉnh bằng màu Vàng.

Giải thích mã

SearchRange.Find (Cái gì: = FindItem)

Đoạn mã trên được sử dụng để tìm ô chứa giá trị tương tự như FindItem.

Union (FindRange, MatchingRange)

Mã trên được sử dụng để kết hợp hai phạm vi thành một phạm vi duy nhất.

SearchRange.FindNext (MatchingRange)

Đoạn mã trên được sử dụng để tìm ô tiếp theo chứa giá trị tương tự như FindItem.

Vui lòng theo dõi bên dưới để biết mã

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

Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.

Chúng tôi rất muốn nghe ý kiến ​​từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]