Sommario
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 esempio9 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.