Come trovare una sottostringa con VBA (9 modi)

  • Condividi Questo
Hugh West

Se state cercando uno dei modi più semplici per trovare una sottostringa con VBA, siete nel posto giusto. Dopo aver letto questo articolo, sarete in grado di trovare la posizione di una sottostringa, di estrarre i dati utilizzando questa sottostringa o di cambiare il formato di una sottostringa con facilità. Entriamo nel vivo dell'articolo.

Scarica il libro di lavoro

Contenuto di esempio

9 modi per trovare le sottostringhe con VBA

Qui ho la seguente tabella di dati in cui mostrerò i modi per trovare le sottostringhe in una stringa usando VBA. Cercherò anche di mostrare i modi per trovare le sottostringhe in una stringa casuale.

Ho eseguito questa operazione utilizzando Microsoft Excel 365 è possibile utilizzare qualsiasi altra versione in base alle proprie esigenze.

Metodo-1: trovare una sottostringa in una stringa utilizzando VBA

Se si desidera trovare la sottostringa desiderata in una stringa utilizzando VBA, è possibile usare la funzione InStr nel codice VBA.

Passo-01 :

Vai a Sviluppatore Scheda Visual Basic Opzione

Poi, il Editor Visual Basic si aprirà.

Vai a Inserire Scheda Modulo Opzione

Successivamente, un Modulo verrà creato.

Passo-02 :

➤Scrivete il seguente codice

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Penso quindi sono", "penso") MsgBox Pos End Sub 

Qui, InStr(1, "Penso quindi sono", "penso") restituisce la posizione della sottostringa di una stringa. 1 è la posizione iniziale, " Penso quindi sono". è la stringa in cui si trova la sottostringa desiderata e "pensare" è la sottostringa che si vuole trovare. Per impostazione predefinita è sensibile alle maiuscole e alle minuscole, quindi bisogna fare attenzione al caso della sottostringa che si vuole cercare.

➤Stampa F5

Risultato :

Successivamente, si otterrà quanto segue Casella di messaggio contenente la posizione dell'elemento "pensare" sottostringa.

Metodo-2: trovare una sottostringa sensibile alle maiuscole in una stringa

Se volete trovare la sottostringa desiderata in una stringa, indipendentemente dal caso, utilizzando VBA, seguite questo metodo.

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Penso quindi sono", "pensa",vbTextCompare) MsgBox Pos End Sub 

Qui, vbTextCompare viene utilizzato per trovare una sottostringa senza distinzione tra maiuscole e minuscole.

➤Stampa F5

Risultato :

Si otterrà quindi quanto segue Casella di messaggio contenente la posizione dell'elemento "pensare" sottostringa.

Si può fare lo stesso utilizzando il seguente codice.

 Option Compare Text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub 

Qui, Opzione Confronta testo troverà la sottostringa senza distinzione tra maiuscole e minuscole.

➤Stampa F5

Risultato :

Successivamente, si otterrà quanto segue Casella di messaggio contenente la posizione dell'elemento "pensare" sottostringa.

Metodo 3: Utilizzo della funzione InstrRev in VBA

Qui mostrerò il modo per trovare una sottostringa dalla fine di una stringa.

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Sub FindFromEnd() MsgBox InStrRev("Penso quindi sono", "Io") End Sub 

InStrRev troverà la sottostringa dal lato destro anziché dal lato sinistro.

➤Stampa F5

Risultato :

Si otterrà quindi quanto segue Casella di messaggio contenente la posizione del secondo "I" dalla parte destra.

Metodo 4: trovare la posizione di una sottostringa in una stringa in un intervallo di dati

Se si vuole trovare il carattere speciale "@" nel Indirizzo e-mail Ho aggiunto qui il metodo Colonna di posizione a questo scopo.

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Funzione FindSubstring(valore come intervallo) come intero Dim Pos come intero Pos = InStr(1, valore, "@") FindSubstring = Pos Fine funzione 

Verrà creata una funzione denominata TrovaSottostringa (è possibile utilizzare qualsiasi altro nome)

valore è il riferimento alla cella che contiene la stringa ed è dichiarato come Gamma .

Passo-02 :

➤Selezionare l'uscita Cellula E5

➤Tipare la seguente funzione (creata da VBA )

=TrovaSottostringa(D5)

D5 è la cella che contiene la stringa.

➤Stampa ENTRARE

➤ Trascinare verso il basso il Maniglia di riempimento Strumento

Risultato :

Successivamente, si otterranno le posizioni del carattere speciale " @" nel Indirizzo e-mail .

Letture simili:

  • Come trovare una stringa in una cella usando VBA in Excel (2 metodi)
  • FindNext con VBA in Excel (2 esempi)
  • Come trovare una stringa con VBA in Excel (8 esempi)
  • VBA Trova l'ultima riga in Excel (5 modi)

Metodo-5: controllo di una determinata sottostringa di una stringa in un intervallo di dati

Supponiamo di voler scrivere Passo o Mancata corrispondenza ai nomi degli studenti a seconda della Colonna dei risultati dove Passo o Bocciatura è stato scritto in una parentesi. Per trovare questa sottostringa nel file Colonna dei risultati e scriverlo nel Colonna "passa" o "non passa seguire questo metodo.

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Sub CheckSubstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.value, "Pass")> 0 Then cell.Offset(0, 1).value = "Passed" Else cell.Offset(0, 1).value = "Failed" End If Next cell End Sub 

Qui, l'intervallo di celle è C5:C10 che è il Colonna dei risultati

InStr(cell.value, "Pass")> 0 è la condizione in cui il numero è maggiore di zero (quando la cella contiene "Passo" ) allora la riga successiva continuerà e fornirà l'output nella cella adiacente come Passato .

Se la condizione diventa falsa, significa che una cella non contiene alcun "Passo" allora la linea sotto Altro verrà eseguito e fornirà il valore di uscita nella cella adiacente come Fallito .

Questo ciclo continuerà per ogni cella.

➤Stampa F5

Risultato :

Si otterranno quindi i seguenti risultati nel file Passare o non passare colonna.

Metodo 6: controllo di una determinata sottostringa in una stringa ed estrazione dei dati

Vi mostrerò la strada per trovare gli studenti con il loro nome Michele nel Colonna Nome dello studente ed estrarre i dati corrispondenti utilizzando VBA in questo metodo.

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).value End If Next i End Sub 

Qui ho utilizzato B100 come il Gamma di fogli attivi ma è possibile utilizzare qualsiasi intervallo in base all'uso che se ne fa.

InStr(1, Range("B" & i), "Michael")> 0 è la condizione per verificare se la cella della colonna B contiene Michele

Intervallo("E" & icount & ":G" & icount) è l'intervallo in cui si vogliono i dati in uscita e Range("B" & i & ":D" & i).value fornirà i valori delle colonne B a D .

➤Stampa F5

Risultato :

Successivamente, si otterranno i seguenti dati estratti per gli studenti che hanno il nome Michele .

Metodo 7: Ricerca di una sottostringa per una parola

Se si desidera trovare la sottostringa come parola, seguire questo metodo.

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Sub Stringforword() Dim j As Integer j = InStr("Ecco cosa sono", "è") If j = 0 Then MsgBox "Parola non trovata" Else MsgBox "Parola trovata in posizione: " & j End If End Sub 

Verrà verificato se la stringa contiene è e quindi la sua posizione sarà data

➤Stampa F5

Risultato :

Successivamente, verrà visualizzata la seguente finestra di messaggio che mostra il parola trovata in posizione:6 (la posizione di è ).

È possibile provare questo codice per una parola che non è presente nella stringa.

➤Tipare il seguente codice

 Sub Stringforword() Dim j As Integer j = InStr("Ecco cosa sono", "sono") If j = 0 Then MsgBox "Parola non trovata" Else MsgBox "Parola trovata in posizione: " & j End If End Sub 

➤Stampa F5

Risultato :

Successivamente, verrà visualizzata la seguente finestra di messaggio che mostra il parola non trovata .

Metodo-8: Utilizzo delle funzioni Instr e LEFT

Qui spiegherò come trovare la posizione di una sottostringa in una stringa ed estrarre i testi prima di questa sottostringa usando VBA e la funzione SINISTRA .

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Ecco cosa sono" j = InStr(txt, "è") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "è") è la posizione della sottostringa è e Sinistra(txt, j - 1) estrarrà le sottostringhe prima di è .

➤Stampa F5

Risultato :

Successivamente, verrà visualizzato il seguente messaggio che mostra Qui (sottostringa prima di è ).

Metodo-9: Grassetto di una determinata sottostringa in una stringa

È possibile mettere in grassetto i voti prima delle parentesi nel campo Colonna dei risultati seguendo questo metodo.

Passo-01 :

➤Segui Passo-01 di Metodo-1

 Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer For Each Cell In Selection txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub 

txt = InStr(1, Cell, "(") restituirà la posizione della prima parentesi graffa e Cell.Characters(1, txt - 1).Font.Bold renderà la sottostringa prima della prima parentesi graffa In grassetto .

Passo-02 :

➤Selezionare la voce Colonna dei risultati

Vai a Sviluppatore Scheda Macro Opzione

Quindi, un Macro apparirà la procedura guidata.

➤Seleziona Grassetto della sottostringa (il nome del codice VBA) e poi Correre .

Risultato :

Dopo di che, i voti nel Risultato Colonna saranno in grassetto.

Sezione pratica

Per fare pratica da soli, abbiamo messo a disposizione un Pratica come di seguito in un foglio chiamato Pratica . per favore, fatelo da soli.

Conclusione

In questo articolo, ho cercato di illustrare i modi più semplici per trovare una sottostringa usando VBA Spero che vi sia utile. Se avete suggerimenti o domande, non esitate a condividerli con noi.

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.