Come trovare una stringa con VBA in Excel (8 esempi)

  • Condividi Questo
Hugh West

Implementazione VBA è il metodo più efficace, rapido e sicuro per eseguire qualsiasi operazione in Excel. In questo articolo, vi mostreremo come trovare determinate stringhe in un'altra stringa data usando VBA in Excel.

Scarica il modello di pratica

È possibile scaricare gratuitamente il modello Excel di esercitazione da qui.

VBA per trovare in Stringa.xlsm

Funzione InStr

Microsoft Excel dispone di una funzione integrata chiamata la funzione InStr per trovare la posizione di stringhe specifiche in una determinata stringa.

Sintassi generica:

InStr([start], string1, string2, [compare])

Qui,

Argomenti Richiesto/ Facoltativo Definizione
inizio Opzionale Posizione di partenza della ricerca.
  • Per impostazione predefinita, l'opzione InStr calcola la posizione del carattere contando a partire da 1, non dalla posizione iniziale. Quindi, se si vuole, si può lasciare vuoto questo campo.
stringa1 Richiesto La stringa da cercare, Stringa primaria.
stringa2 Richiesto La stringa da cercare nella stringa primaria.
confrontare Opzionale Il InStr è sensibile alle maiuscole e alle minuscole per impostazione predefinita, ma se si vuole eseguire un'operazione senza maiuscole e minuscole InStr è possibile passare l'argomento per eseguire un determinato confronto. Questo argomento può avere i seguenti valori,
  • vbBinaryCompare -esegue un confronto binario, valore di ritorno 0
  • vbTextCompare -esegue un confronto di testo, valore di ritorno 1
  • vbDatabaseCompare -esegue un confronto tra database, valore di ritorno 2

Per impostazione predefinita, InStr prende vbBinaryCompare come argomento di confronto.

8 semplici esempi per trovare la posizione di una stringa specifica in una stringa data utilizzando VBA

Vediamo alcuni semplici esempi per ottenere le posizioni di determinate stringhe in una stringa data, utilizzando VBA .

1. VBA per trovare la posizione di un testo in una stringa

Di seguito è riportato un esempio di InStr per trovare la posizione di un testo in una stringa.

  • Stampa Alt + F11 sulla tastiera o andare alla scheda Sviluppatore -> Visual Basic per aprire Editor Visual Basic .

  • Nella finestra del codice a comparsa, dalla barra dei menu, fare clic su Inserire -> Modulo .

  • Ora, nella finestra del codice, scrivere un semplice InStr all'interno di un programma Procedura secondaria VBA (vedi sotto).
 Sub INSTR_Example() MsgBox InStr("La felicità è una scelta", "scelta") End Sub 

Il codice è ora pronto per essere eseguito.

  • Stampa F5 sulla tastiera o dalla barra dei menu selezionare Esegui -> Esegui Sub/UserForm È anche possibile fare clic sul pulsante piccola icona Play nella barra dei sottomenu per eseguire la macro.

La finestra di messaggio a comparsa vi darà un'indicazione di numero che dichiara la posizione del testo che si desidera controllare.

Spiegazione:

La nostra stringa principale, " La felicità è una scelta " è una frase di 21 lettere (con spazi) e volevamo trovare la posizione del testo " scelta "Il testo " scelta " è partito dalla 16a posizione della stringa primaria, quindi abbiamo ottenuto il numero 16 come output nella casella di messaggio.

2. VBA per trovare un testo in una posizione specifica di una stringa

Ora scopriamo cosa succederebbe se volessimo ottenere la posizione da un certo numero.

  • Allo stesso modo di prima, aprire Editor Visual Basic dal Sviluppatore e Inserire a Modulo nella finestra del codice.
  • Nella finestra del codice, scrivere un semplice InStr e passare il valore nell'argomento start in base alla posizione da cui si vuole contare il testo.
 Sub INSTR_Example() MsgBox InStr(17, "La felicità è una scelta", "scelta") End Sub 

  • Il prossimo, Correre il codice.

La finestra di messaggio a comparsa vi darà un'indicazione di numero che dichiara la posizione del testo partendo da una determinata posizione che si voleva controllare.

Spiegazione:

Come già sapevamo (dalla discussione della fase 1) il testo " scelta " è partito dalla posizione di 16 , quindi abbiamo inserito due " scelta " nella stringa primaria e impostare 17 come primo parametro per saltare il primo " scelta "Quindi, noi Correre la macro di cui sopra e ci ha mostrato il numero di posizione 27 che è esattamente il numero di posizione dell'elemento secondo " scelta " nella stringa data.

3. VBA per trovare un testo con la funzione InStr senza distinzione tra maiuscole e minuscole in una stringa

Dall'introduzione del InStr si sa già che, per impostazione predefinita, la funzione InStr La funzione è sensibile alle maiuscole e alle minuscole. Scopriamolo con un esempio.

Si veda quanto segue VBA dove volevamo trovare la posizione della parola " Scelta " con un C maiuscola nella stringa " La felicità è una scelta " dove la scelta è scritta con un piccola "c" .

  • Correre il codice e trovare 0 come output.

Questo perché il InStr la funzione tratta C maiuscola e piccola "c" in modo diverso. Quindi ha cercato la parola " Scelta " nella stringa e non ha ottenuto alcuna corrispondenza, quindi ha restituito 0 .

  • Per realizzare il InStr funzione senza distinzione tra maiuscole e minuscole , imposta l'argomento compare a vbTextCompare (vedi sotto).
 Sub INSTR_Example() MsgBox InStr(1, "La felicità è una scelta e una scelta", "Scelta", vbTextCompare) End Sub 

  • Correre il codice.

Otterrete il posizione del testo dalla stringa, sia che il testo sia scritto in lettere maiuscole o minuscole .

4. VBA per trovare il testo a destra di una stringa

Fino ad oggi il InStr ci dava solo la posizione dal lato sinistro della stringa, ma se si volesse trovare la posizione del testo dal lato destro della stringa.

La funzione InStrRev ricerca da destra. InStrRev funziona in modo molto simile alla funzione InStr e troverà la posizione di un testo dal file lato destro della stringa.

Per capire la differenza, si vedano gli esempi seguenti.

  • Se si esegue il codice seguente con l'opzione InStr funzione quindi,

ci dà la posizione ( 16 ) del primo testo " scelta ".

  • Ma se eseguiamo lo stesso codice con l'opzione InStrRev Funzione quindi,

ci dà la posizione ( 27 ) dell'ultimo testo " scelta ".

Letture simili:

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

5. VBA per trovare la posizione di un carattere nella stringa

È anche possibile trovare la posizione di un determinato carattere in una stringa nello stesso modo in cui si trova il testo.

  • Copiate il seguente codice nel vostro file VBA finestra del codice
 Sub Find_Character() Dim z As Long z = InStr("La felicità è una scelta", "e") MsgBox z End Sub 

  • E Correre la macro.

Il primo " e " nella nostra stringa data è al numero 7 posizione.

6. VBA per trovare una sottostringa in una stringa

Qui impareremo come trovare se una stringa contiene un elemento sottostringa o meno.

Per ottenerlo, dobbiamo eseguire un'operazione Dichiarazione IF nel nostro codice.

  • Allo stesso modo di prima, aprire Editor Visual Basic dal Sviluppatore e Inserire a Modulo nella finestra del codice.
  • Nella finestra del codice, copiare il codice seguente e incollarlo.
 Public Sub FindSub() If InStr("La felicità è una scelta", "scelta") = 0 Then MsgBox "Nessuna corrispondenza trovata" Else MsgBox "Partita trovata" End If End Sub 

Il codice è ora pronto per essere eseguito.

  • Correre la macro.

Se il vostro contiene la sottostringa si otterrà un corrispondenza trovata altrimenti non verrà trovata alcuna corrispondenza. Nel nostro esempio, volevamo scoprire se la nostra stringa primaria " La felicità è una scelta " contiene la parola " scelta "Se così fosse, otterremmo un Partita trovata risultato.

7. VBA per trovare una stringa in un intervallo di celle

È possibile cercare un determinato testo in un intervallo di celle e restituire una determinata stringa.

Guardate l'esempio seguente, dove troveremo " Il dott. " e quando c'è una corrispondenza restituisce " Il medico ".

  • Di seguito è riportato il codice per ottenere il risultato discusso in precedenza,
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • Correre il codice e il risultato è mostrato di seguito

  • È possibile modificare la macro in base alle proprie esigenze. Ad esempio, se si desidera trovare " Il prof. " in qualsiasi cella della stringa e ottenere " Professore " come ritorno, quindi passare semplicemente " Il prof. " come valore invece di " Il dott. ." nella quarta riga della macro e " Professore " invece di " Il medico " nella quinta riga della macro e definire di conseguenza il numero dell'intervallo di celle.

8. VBA per trovare una stringa in una cella

È inoltre possibile ricerca di un determinato testo in una singola cella della stringa e restituire una determinata stringa.

  • Copiare il codice seguente e incollarlo nella finestra del codice.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub 

Cercherà " Il dott. " in Cellula B5 e se trova la corrispondenza, restituisce " Il medico " in Cellula C5 .

  • È possibile modificare la macro in base alle proprie esigenze. Ad esempio, se si desidera trovare " Il prof. " in qualsiasi cella della stringa e ottenere " Professore " come ritorno, quindi passare semplicemente " Il prof. " come valore invece di " Il dott. ." nella seconda riga della macro e " Professore " invece di " Il medico " nella terza riga della macro e definire di conseguenza il numero di riferimento della cella.

Conclusione

In questo articolo è stato mostrato come trovare determinati testi in stringhe in Excel utilizzando Macro VBA. Spero che questo articolo vi sia stato utile e non esitate a fare domande su questo argomento.

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.