In questo articolo, useremo il metodo find dell’oggetto Range per evidenziare la cella che contiene il valore simile alle parole di ricerca.

I dati grezzi per questo esempio sono il nome della società, l’ID del dipendente e il nome del dipendente. Abbiamo dati grezzi da diverse società.

In questo esempio, vogliamo trovare ed evidenziare la cella che corrisponde al particolare nome dell’azienda definito nella cella I8.

ArrowRawData

Per evidenziare le celle con particolari nomi di società, immettere il nome della società nella cella I8 e fare clic sul pulsante “Invia”. Al pulsante “Invia” viene assegnata la macro “HighlightMatchingResult”.

ArrowCallingFunction

La macro “HighlightMatchingResult” evidenzierà la cella che contiene il nome dell’azienda corrispondente con il colore giallo.

ArrowOutput

Spiegazione logica

In questo esempio, abbiamo creato una funzione personalizzata “FindRange” e una macro “HighlightMatchingResult”.

La funzione personalizzata “FindRange” creerà un intervallo con tutte le celle che contengono un valore simile al nome dell’azienda cercato.

La macro “HighlightMatchingResult” chiamerà la funzione personalizzata ed evidenzierà l’intervallo restituito dalla funzione personalizzata in colore giallo.

Spiegazione del codice

SearchRange.Find (Cosa: = FindItem)

Il codice sopra viene utilizzato per trovare la cella che contiene un valore simile a FindItem.

Union (FindRange, MatchingRange)

Il codice sopra viene utilizzato per combinare due intervalli in un unico intervallo.

SearchRange.FindNext (MatchingRange)

Il codice sopra viene utilizzato per trovare la cella successiva che contiene un valore simile a FindItem.

Segui sotto per il codice

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

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]