Vba: come sostituire i caratteri in una stringa
È possibile utilizzare il metodo replace() in VBA per sostituire i caratteri in una stringa.
Questo metodo utilizza la seguente sintassi di base:
Sostituisci(espressione, trova, sostituisci, avvia, conta)
Oro:
- espressione : la stringa in cui si desidera sostituire i caratteri
- find : la stringa da trovare
- replace : la stringa da utilizzare in sostituzione
- start ( facoltativo ) : la posizione iniziale nella stringa da cercare
- count ( facoltativo ) : il numero di sostituzioni da eseguire
I seguenti esempi mostrano come utilizzare in pratica questo metodo con il seguente elenco di stringhe in Excel:
Esempio 1: utilizzare VBA per sostituire tutte le occorrenze di caratteri in una stringa (con distinzione tra maiuscole e minuscole)
Diciamo che vogliamo sostituire “questo” con “QUEL” in ogni stringa.
Per fare ciò possiamo creare la seguente macro:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(Range(" A " & i), " this ", " THAT ") Next i End Sub
Quando eseguiamo questa macro, riceviamo il seguente output:
La colonna B visualizza ciascuna delle stringhe nella colonna A, con ogni occorrenza di “questo” sostituita con “QUEL”.
Tieni presente che questa sostituzione fa distinzione tra maiuscole e minuscole .
Cioè, ogni occorrenza di “questo” viene sostituita ma ogni occorrenza di “questo” viene lasciata sola.
Esempio 2: utilizzare VBA per sostituire tutte le occorrenze di caratteri in una stringa (senza distinzione tra maiuscole e minuscole)
Diciamo che vogliamo sostituire “questo” (indipendentemente dal caso) con “QUEL” in ogni stringa.
Per fare ciò possiamo creare la seguente macro:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ") Next i End Sub
Quando eseguiamo questa macro, riceviamo il seguente output:
La colonna B visualizza ciascuna delle stringhe nella colonna A, con ogni occorrenza di “questo” sostituita con “QUEL”.
Tieni presente che questa sostituzione non fa distinzione tra maiuscole e minuscole .
Cioè, ogni occorrenza di “this” (in maiuscolo o meno) viene sostituita.
Siamo stati in grado di eseguire questa sostituzione senza distinzione tra maiuscole e minuscole utilizzando il metodo LCase per convertire prima ogni stringa nella colonna A in lettere minuscole prima di cercare “questo” in ogni stringa.
Esempio 3: utilizzare VBA per sostituire le prime N occorrenze di un carattere in una stringa
Supponiamo di voler sostituire solo la prima occorrenza di “this” (indipendentemente dal caso) con “THAT” in ogni stringa.
Per fare ciò possiamo creare la seguente macro:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ", Count:=1) Next i End Sub
Quando eseguiamo questa macro, riceviamo il seguente output:
La colonna B visualizza ciascuna delle stringhe nella colonna A con solo la prima occorrenza di “questo” sostituita con “QUEL”.
Tieni presente che abbiamo utilizzato Count:=1 per sostituire solo la prima occorrenza di una stringa specifica, ma puoi sostituire 1 con qualsiasi valore desideri sostituire le prime n occorrenze di una stringa specifica.
Nota : qui è possibile trovare la documentazione completa per il metodo VBA Sostituisci .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni utilizzando VBA:
VBA: come contare le occorrenze di caratteri in una stringa
VBA: come verificare se una stringa contiene un’altra stringa
VBA: come contare le celle con testo specifico