Come utilizzare la funzione InStr in VBA (3 semplici esempi)

  • Condividi Questo
Hugh West

Lavorando con i codici VBA di Excel, ci si imbatte in alcune funzioni integrate che convertono un'attività complessa in un piccolo codice di una riga. InStr è una funzione disponibile in Excel VBA che cerca una particolare stringa all'interno di un'altra stringa a partire da una determinata posizione. Oggi vi mostrerò come potete utilizzare la funzione InStr in VBA per cercare una stringa specifica all'interno di un'altra stringa data.

Scarica il quaderno di esercizi

Funzione InStr.xlsm

Introduzione a Funzione VBA InStr

  • Sintesi

Cerca una stringa specifica all'interno di una stringa data, a partire da una posizione data. Se trova una corrispondenza, restituisce la posizione nella stringa data da cui è iniziata la corrispondenza.

  • Sintassi

InStr([inizio],string1,string2,[confronta])

  • Argomenti
ARGOMENTO REQUISITI DESCRIZIONE

[inizio] Opzionale La posizione da cui inizia la ricerca. L'impostazione predefinita è 1.
stringa1 Richiesto La stringa all'interno della quale cerca una determinata stringa.
stringa2 Richiesto La stringa che cerca all'interno di una determinata stringa.
[confronta] Opzionale Un valore numerico compreso tra {-1,0,1,2} che specifica il tipo di confronto. Il valore predefinito è -1 (vbUseCompareOption). Se l'istruzione Option Compare non è specificata, viene eseguito il confronto binario.

Nota:

  • Anche se il [inizio] e l'argomento [confronta] sono opzionali, è necessario che l'argomento [inizio] se si specifica l'argomento [confronta] Altrimenti, viene generato un errore.
  • Se uno o entrambi i [inizio] e l'argomento [confronta] l'argomento è Nullo si verificherà un errore.
  • I quattro valori specificati nel campo [confronta] L'argomento esegue quattro diversi tipi di confronto, indicati di seguito:
VALORE COSTANTE DESCRIZIONE

-1 vbUseCompareOption Esegue il confronto specificato nell'istruzione Option Compare.
0 vbBinaryCompare Esegue un confronto binario.
1 vbTextCompare Esegue un confronto di testo.
2 vbDatabaseCompare Esegue un confronto basato sul database.
  • Opzione Confronta è un'istruzione fornita prima dell'avvio del codice VBA principale, che specifica se il codice deve cercare un confronto binario o un confronto testuale quando necessario.

Opzione Confronta testo

    • In termini semplici , Confronto binario significa confronto sensibile alle maiuscole e alle minuscole.
    • In termini semplici , Confronto tra testi significa confronto senza distinzione tra maiuscole e minuscole.
  • Valore di ritorno
    • Restituisce la posizione nel campo stringa1 da cui il stringa2 iniziato.
    • In caso stringa2 non si trova all'interno di stringa1 a partire dal inizio posizione, restituisce 0.
    • Se il stringa1 è di lunghezza zero, restituisce 0.
    • Se il stringa2 è di lunghezza zero, restituisce l'argomento inizio .
    • Infine, se uno qualsiasi dei stringa1 o stringa2 è Nullo , restituisce un errore.

3 semplici esempi di utilizzo della funzione InStr di VBA

In questa sezione, vedremo tre semplici esempi di applicazione del VBA InStr in Excel. Vediamo il primo esempio della funzione InStr nei codici VBA.

1. Decidere se un indirizzo è un indirizzo e-mail o meno utilizzando la funzione InStr di VBA

In questo caso, abbiamo preso un set di dati contenente alcuni indirizzi di contatto di clienti. Il nostro obiettivo sarà quello di identificare se gli indirizzi sono indirizzi e-mail o meno.

Ora svilupperemo un codice VBA utilizzando l'opzione InStr per identificare se si tratta di un indirizzo e-mail o meno. Per farlo, seguite i passaggi seguenti.

Passi:

  • All'inizio, andare alla voce Sviluppatore e selezionare Visual Basic ( Oppure premere Alt+F11) per aprire il VBA finestra.

  • Poi, sul VBA andare alla finestra Inserire> Modulo .

  • Successivamente, nel modulo, incollare il seguente codice:
 Function DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Not Email" Else DECISION = "Email" End If End Function 

  • Inoltre, abbiamo creato una funzione chiamata DECISIONE Decide se un indirizzo è un indirizzo e-mail o meno. Applichiamo la funzione all'insieme di dati che abbiamo.
  • Sulla cella C5 scrivere la seguente formula e poi riempire automaticamente il resto delle celle usando Maniglia di riempimento .
=DECISIONE(B5)

  • Come si può vedere, abbiamo identificato ogni indirizzo, che sia un indirizzo e-mail o meno.

🎓 Come funziona il codice?

  • Funzione DECISION(string1 come stringa)

Innanzitutto, viene creata una funzione chiamata DECISIONE con un parametro stringa chiamato stringa1 .

  • Dim Posizione come intero

Dichiara una variabile intera denominata Posizione .

  • Posizione = InStr(1, string1, "@", 0)

Questo assegna il valore dell'opzione Posizione come uscita della variabile InStr con gli argomenti 1, string1, "@" e 0 In breve, questo assegna la posizione nell'indirizzo in cui si trova un "@" .

  • Se Posizione = 0, allora DECISIONE = "Non e-mail".

Assegna l'uscita dell'opzione DECISIONE funzione come "Non e-mail" , se il Posizione la variabile è 0 , cioè non c'è stato nessun "@" nell'indirizzo.

(Ricordiamo che se una stringa non viene trovata all'interno della stringa data, il metodo InStr La funzione restituisce 0 ).

  • Altrimenti DECISIONE = "Email"

Questo assegna l'uscita del metodo DECISIONE funzione come "Email" se c'era un "@" Così gli indirizzi in cui c'è l'indicazione "@" sono classificati come Email e gli altri sono classificati come "Non e-mail" .

Letture simili

  • Come utilizzare la funzione VBA UCASE in Excel (4 esempi)
  • Utilizzare la funzione MsgBox in Excel VBA (una guida completa)
  • Come utilizzare la funzione VBA SPLIT in Excel (5 esempi)
  • Utilizzare la funzione LCase in VBA in Excel (con 4 esempi)
  • Come usare la funzione Fix in Excel VBA (4 esempi)

2. Utilizzo della funzione InStr di VBA per Estrazione dell'estensione di alcuni indirizzi e-mail

Qui abbiamo un elenco di indirizzi e-mail di alcuni clienti. Questa volta estrarremo l'estensione dell'indirizzo e-mail, come ad esempio se ha gmail.com o yahoo.com .

Per farlo, seguite i passaggi indicati di seguito.

Passi:

  • Per iniziare, come per il metodo precedente, aprite un nuovo file VBA e incollare il seguente codice nella finestra.
 Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function 

  • Inoltre, abbiamo creato una funzione chiamata ESTENSIONE Estrae l'estensione di qualsiasi indirizzo e-mail.
  • Inoltre, applichiamo questa funzione all'insieme di dati che abbiamo. Per prima cosa, inseriamo questa formula nella cella C5 e poi fare doppio clic sulla voce Maniglia di riempimento .
=ESTENSIONE(B5)

  • Infine, possiamo vedere che abbiamo estratto con successo l'estensione di tutte le e-mail.

🎓 Come funziona il codice?

  • Funzione ESTENSIONE(Email come stringa)

Questo crea una nuova funzione chiamata ESTENSIONE con un argomento stringa chiamato Email .

  • Dim Posizione come intero

Questa parte dichiara una variabile intera denominata Posizione.

  • Posizione = InStr(1, Email, "@", 0)

Questo assegna il valore dell'opzione Posizione come uscita della variabile InStr con gli argomenti 1, Email, "@" e 0 In breve, questo assegna la posizione nel Email dove c'è un "@" .

  • ESTENSIONE = Destra(Email, (Len(Email) - Posizione))

Questa parte assegna l'uscita del programma ESTENSIONE come i caratteri dopo il simbolo "@" Si tratta dell'estensione richiesta del Email .

3. Estrazione del nome o del cognome da un nome utilizzando la funzione InStr di VBA

Infine, eseguiamo un'operazione completamente diversa. Questa volta abbiamo i nomi di alcuni dipendenti di un'azienda e cercheremo di costruire una funzione per estrarre il nome o il cognome dei dipendenti.

Per farlo, seguite i passaggi indicati di seguito.

Passi:

  • In primo luogo, analogamente a metodo 1 incollare il codice sottostante in un nuovo modulo della finestra VBA.
 Function SHORTNAME(Nome come stringa, First_or_Last come intero) Dim Break come intero Break = InStr(1, Nome, " ", 0) If First_or_Last = -1 Then SHORTNAME = Left(Nome, Break - 1) Else SHORTNAME = Right(Nome, Len(Nome) - Break) End If End Function 

  • Qui abbiamo creato una funzione chiamata NOME BREVE che estrae il nome o il cognome da un nome. Applichiamo questa formula al nostro set di dati.
  • All'inizio, per estrarre il nome, scrivete la formula sottostante nella cella C5 .
=NOME BREVE(B5,-1)

  • Infine, per estrarre i cognomi, scriviamo la seguente formula in D5 :
=NOME BREVE(B5,1)

  • Successivamente, se si riempie automaticamente il resto delle celle con Gestore del riempimento , si otterrà il risultato desiderato.

🎓 Come funziona il codice?

  • Funzione SHORTNAME(Nome come stringa, Primo_o_ultimo come intero)

Crea una nuova funzione chiamata NOME BREVE con un parametro String chiamato Nome e un argomento intero chiamato Primo_o_ultimo .

  • Dim Break come intero

Questa parte dichiara una nuova variabile intera denominata Pausa .

  • Interruzione = InStr(1, Nome, " ", 0)

Assegna il valore dell'elemento Pausa come uscita della variabile InStr con gli argomenti 1, Nome, " " e 0 In breve, questo assegna la posizione nel Nome dove c'è un spazio (" ").

  • Se First_or_Last = -1 Allora SHORTNAME = Left(Name, Break - 1)

Questa riga assegna l'output del metodo NOME BREVE come i caratteri che precedono il carattere spazio , se il Primo_o_ultimo è -1. Questo è il primo nome.

  • SHORTNAME = Right(Name, Len(Name) - Break)

Questa parte assegna l'uscita del programma NOME BREVE come i caratteri dopo il carattere spazio , se il Primo_o_ultimo L'argomento è 1. Si tratta del cognome.

Conclusione

In questo modo, è possibile scrivere codici VBA con la funzione InStr che scopre la posizione di una stringa specifica all'interno di un'altra stringa data, e poi potete creare le vostre funzioni per una varietà di usi. Inoltre, se avete domande, non esitate a chiedercele.

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.