Funzione Excel VBA InStr: spiegata con esempi

Ieri ho ricevuto un’e-mail da uno dei miei lettori: giugno.

Voleva farlo sapere come applicare il formato del carattere in grassetto a una parte specifica di una stringa all’interno di una cella. Ad esempio, applica il formato in grassetto solo alla parola “Hello” da “Hello World”.

E voleva farlo per centinaia di celle contemporaneamente.

Poiché è presente nessuna funzionalità incorporata in Excel che può farlo, ho creato una semplice macro che utilizza la funzione Excel VBA InStr (vedrai come farlo nell’esempio 4 in questo tutorial).

Ma prima, vediamo come funziona la funzione Excel VBA InStr!

Questo tutorial tratta:

Funzione Excel VBA InStr

In questo tutorial, spiegherò l’utilizzo della funzione InStr in Excel VBA e vedrò alcuni esempi pratici in cui può essere utilizzato.

Funzione InStr di Excel VBA – Introduzione

La funzione InStr trova la posizione di una sottostringa specificata all’interno della stringa e restituisce la prima posizione della sua occorrenza.

Ad esempio, se si desidera trovare la posizione di “x” in “Excel”, utilizzando la funzione Excel VBA InStr restituirà 2.

Sintassi della funzione InStr

  • – (argomento opzionale) questo è un valore intero che indica alla funzione InStr la posizione di partenza dalla quale dovrebbe iniziare a cercare. Ad esempio, se voglio che la ricerca inizi dall’inizio, inserirò il valore come 1. Se voglio che inizi con il terzo carattere in poi, userò 3. Se omesso, viene preso il valore predefinito di 1.
  • Stringa1 – Questa è la stringa principale (o la stringa genitore) in cui desideri eseguire la ricerca. Ad esempio, se stai cercando la posizione di x in Excel, la stringa 1 sarebbe “Excel”.
  • Stringa2: questa è la sottostringa che stai cercando. Ad esempio, se stai cercando la posizione di x in Excel, String2 sarebbe x.
  • – (argomento opzionale) Puoi specificare uno dei tre valori seguenti per l’argomento:
    • vbBinaryCompare – Questo farebbe un carattere per confronto di caratteri. Ad esempio, se stai cercando “x” in “Excel”, restituirà 2, ma se stai cercando “X” in “Excel”, restituirà 0 poiché X è in alto case. Puoi anche usare 0 invece di vbBinaryCompare. Se l’argomento viene omesso, questo è il valore predefinito.
    • vbTextCompare: farebbe un confronto testuale. Ad esempio, se cerchi “x” o “X” in Excel, restituirebbe 2 in entrambi i casi. Questo argomento ignora le maiuscole / minuscole. Puoi anche utilizzare 1 invece di vbTextCompare.
    • vbDatabaseCompare: viene utilizzato solo per Microsoft Access. utilizza le informazioni in il database per eseguire il confronto. Puoi anche utilizzare 2 invece di vbDatabaseCompare.

Note aggiuntive sulla funzione InStr VBA di Excel:

  • InStr è un VBA funzione e non una funzione del foglio di lavoro. Ciò significa che non puoi utilizzarlo all’interno del foglio di lavoro.
  • Se String2 (che è la sottostringa di cui stai cercando la posizione) è vuota, la funzione restituirà il valore dell’argomento.
  • Se la funzione InStr non riesce a trovare la sottostringa all’interno della stringa principale, restituirà 0.

Ora diamo un’occhiata a qualche esempio di utilizzo della funzione InStr VBA di Excel

Esempio 1 – Trovare la posizione dall’inizio

In questo esempio, userò la funzione InStr per trovare la posizione di “V” in “Excel VBA” dall’inizio.

Il codice per questo sarebbe:

Sub FindFromBeginning()Dim Position As IntegerPosition = InStr(1, "Excel VBA", "V", vbBinaryCompare)MsgBox PositionEnd Sub

Quando esegui questo codice, verrà visualizzata una finestra di messaggio con il valore 7, che è la posizione di “V” nella stringa “Excel VBA”.

Esempio 2: trovare la posizione dall’inizio della seconda parola

Supponiamo che io voglia trovare la posizione di “la” nella frase – “La volpe marrone veloce salta sopra il cane pigro”

Tuttavia, voglio che la ricerca iniziare dalla seconda parola in poi.

In questo caso, dobbiamo cambiare l’argomento per assicurarci che specifichi la posizione da dove inizia la seconda parola.

Ecco il codice che farà questo:

Sub FindFromSecondWord()Dim Position As IntegerPosition = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Questo codice mostrerà la finestra di messaggio con il valore 32 poiché abbiamo specificato la posizione iniziale come 4. Quindi ignora la prima ‘ La “e trova la seconda” la “nella frase.

Se vuoi renderla più dinamica, puoi migliorare il codice in modo che ignori automaticamente la prima parola.

Ecco il codice avanzato che farà questo:

Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub

Questo codice prima trova la posizione di uno spazio e la memorizza nella variabile StartingPosition.

Quindi utilizza questa variabile come posizione iniziale per cercare la parola “the”.

Quindi restituisce 32 (che è la posizione iniziale di “the” dopo la prima parola).

Esempio 3: trovare la posizione di @ nell’indirizzo e-mail

È possibile creare facilmente una funzione personalizzata per trovare la posizione di @ in un indirizzo e-mail utilizzando la funzione InStr VBA di Excel.

Ecco il codice per creare la funzione personalizzata:

Ora puoi usare questa funzione personalizzata come qualsiasi altra funzione del foglio di lavoro. Richiederà un riferimento di cella come input e ti darà la posizione di @ al suo interno.

Allo stesso modo, puoi creare un funzione personalizzata per trovare la posizione di qualsiasi sottostringa all’interno della stringa principale.

Esempio 4 – Evidenziazione di una parte di stringa all’interno delle celle

Questa è la query che è stata posta da giugno (il mio lettore che mi ha anche ispirato a scrivere questo tutorial).

Ecco un esempio di dati nel formato che June mi ha inviato:

La sua richiesta era di rendere i numeri fuori parentesi in grassetto.

Ecco il codice che ho creato per fare questo:

Il codice sopra usa il ciclo For Each per passare attraverso ciascuna delle celle nella selezione. Identifica la posizione del carattere della parentesi di apertura utilizzando la funzione InStr. Quindi cambia il carattere del testo prima della parentesi.

Per usare questo codice, è necessario copiare e incollare in un modulo nell’editor VB.

Dopo aver copiato incollato il codice, seleziona le celle in cui desideri eseguire questa formattazione ed esegui la macro (come mostrato di seguito).

Potrebbero piacerti anche i seguenti tutorial VBA di Excel:

  • Funzione SPLIT VBA di Excel.
  • Funzione TRIM VBA.
  • La guida definitiva ai loop VBA di Excel .
  • Guida per principianti all’utilizzo del ciclo For Next in Excel VBA.
  • Come creare e utilizzare un componente aggiuntivo di Excel.
  • Come combinare più cartelle di lavoro in una cartella di lavoro di Excel.
  • Come contare le celle colorate in Excel.
  • Esempi utili di macro VBA di Excel per principianti.
  • Come ordinare i dati in Excel utilizzando VBA (Una guida passo passo)

Leave a Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *