Come utilizzare la funzione Find in VBA (6 esempi)

  • Condividi Questo
Hugh West

Una delle funzioni più importanti e diffuse che utilizziamo in Applicazione Visual Basic (VBA) è la funzione Trova. In questo articolo vi mostrerò come utilizzare la funzione Funzione FIND di Excel con esempi e illustrazioni appropriate.

Scarica il quaderno di esercizi

Funzione Trova in VBA in Excel.xlsm

6 esempi rapidi di utilizzo della funzione FIND in VBA

Qui abbiamo un insieme di dati con il valore Nomi di libri, autori e Prezzi di alcuni libri di una libreria chiamata Martin Bookstore.

Oggi il nostro obiettivo è quello di vedere vari tipi di utilizzo del Trova la funzione di VBA da questo set di dati.

1. Utilizzare la funzione Trova in VBA senza parametri

È possibile utilizzare la funzione Trova la funzione di VBA senza parametri.

Quindi cercherà un valore specifico all'interno di un intervallo di celle e restituirà la prima corrispondenza trovata.

Cerchiamo il nome "P. B. Shelly" nella colonna Autore ( C4:C13 ).

La linea con il Trova la funzione sarà:

Set cell = Range("C4:C17").Find("P. B. Shelly")

L'opera completa Codice VBA sarà:

Codice VBA:

 Sub Find() Set cell = Range("C4:C17").Find("P. B. Shelly") MsgBox cell.Address End Sub 

Uscita:

Produce un Macro chiamato Trova Se si esegue la macro, essa restituirà $C$6 , l'indirizzo della prima cella con il nome P. B. Shelly .

Per saperne di più: Trova all'interno di un intervallo con VBA in Excel: incluse le corrispondenze esatte e parziali

2. Applicare la funzione Trova in VBA con il parametro Dopo (per iniziare la ricerca da una cella specifica)

È possibile utilizzare la funzione Dopo con il parametro Trova la funzione in VBA Quindi inizierà a cercare un valore al di sotto di una cella all'interno di un intervallo.

Per esempio, iniziamo la ricerca del nome "P. B. Shelly" da sotto la cella C6 .

La riga di codice sarà:

Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6"))

E il completo Codice VBA sarà:

Codice VBA:

 Sub Find() Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6")) MsgBox cell.Address End Sub 

Uscita:

Restituirà $C$13 perché inizia la ricerca dal basso della cella C6 , che proviene da una cella C7 . Quindi diventa P. B. Shelly in cella C13 prima.

Per saperne di più: Come trovare una stringa in una cella usando VBA in Excel

3. Eseguire la funzione Find in VBA con il Wrapping attorno al parametro After (per cercare un valore in modo circolare)

Il Dopo con il parametro Trova la funzione cerca un valore in modo circolare

Cioè, inizia la ricerca dal basso di una cella all'interno di un intervallo, termina la ricerca nell'intervallo e poi ricomincia dall'alto dell'intervallo.

Per esempio, iniziamo a cercare il nome "John Keats" da sotto la cella C8 utilizzando il Dopo parametro.

La riga di codice sarà:

Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8"))

E il completo Codice VBA sarà:

Codice VBA:

 Sub Find() Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8")) MsgBox cell.Address End Sub 

Uscita:

Restituirà $C$7 perché inizia la ricerca dal basso della cella C8 , che proviene da una cella C9 .

Non trova nulla fino alla cella C13 , quindi parte di nuovo dalla cella C4 e ne trova uno nella cella C7 .

Letture simili:

  • Come trovare una stringa con VBA in Excel (8 esempi)
  • Trovare una corrispondenza esatta con VBA in Excel (5 modi)
  • Come trovare e sostituire con VBA (11 modi)

4. Utilizzare la funzione Find in VBA con il parametro LookAt (per una corrispondenza esatta o parziale)

È possibile utilizzare la funzione Trova la funzione in VBA con il Guardare parametro.

Utilizzo LookAt = xlWhole per un Esattamente e LookAt=xlPart per un Parziale partita.

Per esempio, cerchiamo di scoprire se esiste un libro con il nome "Ode" nel Nome del libro ( B4:B13 ).

Se utilizziamo xlIntero nella riga di codice:

Set cell = Range("B4:B13").Find("Ode", LookAt:=xlWhole)

L'output mostrerà un errore perché non troverà nessun esatto partita.

Ma se si usa:

Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart)

Poi tornerà $B$9 perché c'è un libro con il nome "Ode" nella cella B7 , Ode all'usignolo.

Quindi il codice completo per l'applicazione parziale è la partita:

Codice VBA:

 Sub Find() Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart) MsgBox cell.Address End Sub 

5. Utilizzare la funzione Find in VBA con il parametro SearchDirection (per specificare la direzione della ricerca)

È inoltre possibile utilizzare il comando Trova la funzione in VBA con il Direzione di ricerca parametro.

Utilizzo Direzione di ricerca = xlNext per la ricerca da Da cima a fondo .

E Direzione di ricerca = xlPrecedente per la ricerca da Dal basso verso l'alto .

Per esempio, proviamo a trovare l'Autore Elif Shafak nella colonna Autore ( C4:C13 ).

Se utilizziamo xlNext nella riga di codice:

Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlNext)

Quindi restituirà $C$5 .

Ma se si usa:

Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious)

Poi tornerà $C$11 .

Quindi il codice completo per la ricerca da dal basso verso l'alto è:

Codice VBA:

 Sub Find() Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious) MsgBox cell.Address End Sub 

6. Funzione Find in VBA con il parametro MatchCase (per una corrispondenza sensibile o insensibile alle maiuscole e alle minuscole)

Infine, è possibile utilizzare l'opzione Trova la funzione con il Caso di incontro parametro.

Utilizzo MatchCase = Vero per un sensibile alle maiuscole e alle minuscole partita , e MatchCase=False per un senza distinzione tra maiuscole e minuscole partita.

Per esempio, cerchiamo di trovare il libro "madre" nel Nome del libro ( B4:B13 ).

Se si utilizza True nella riga di codice:

Set cell = Range("B4:B13").Find("madre", MatchCase:=True)

L'output mostrerà un errore perché non troverà alcuna corrispondenza.

Ma se si usa:

Set cell = Range("B4:B13").Find("madre", MatchCase:=False)

Poi tornerà $B$9 perché c'è un libro che si chiama "Madre" in cella B8 .

Quindi il codice completo per l'applicazione senza distinzione tra maiuscole e minuscole è la partita:

Codice VBA:

 Sub Find() Set cell = Range("B4:B13").Find("Mother", MatchCase:=False) MsgBox cell.Address End Sub 

Conclusione

Grazie a questi metodi, è possibile utilizzare la funzione Trova in un'applicazione Visual Basic. Se avete domande, non esitate a porcele.

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.