Com utilitzar la funció InStr a VBA (3 exemples senzills)

  • Comparteix Això
Hugh West

Mentre treballem amb codis VBA d'Excel, ens trobem amb algunes funcions integrades que converteixen una tasca complexa en un petit codi d'una línia. InStr és una funció disponible a Excel VBA que cerca una cadena determinada dins d'una altra cadena donada a partir d'una posició determinada. Avui us mostraré com podeu utilitzar la funció InStr a VBA per cercar una cadena específica dins d'una altra cadena determinada.

Descarregueu el llibre de pràctiques

InStr Function.xlsm

Introducció a VBA InStr Function

  • Resum

Cerca una cadena específica dins d'una cadena determinada, començant des d'una posició determinada. Si troba una coincidència, retorna la posició a la cadena donada des d'on va començar la coincidència.

  • Sintaxi

InStr([inici ],string1,string2,[comparar])

  • Arguments
ARGUMENT REQUISIT DESCRIPCIÓ

[inici] Opcional La posició des de la qual començarà la cerca. El valor predeterminat és 1.
cadena1 Obligatori La cadena dins de la qual cerca una cadena determinada.
cadena2 Obligatori La cadena que cerca dins d'una cadena determinada.
[comparar] Opcional Un valor numèric entre {-1,0,1,2} que especifica el tipus de comparació. Elper defecte és -1 (vbUseCompareOption). Si no s'especifica la instrucció Option Compare, feu una comparació binària.

Nota:

  • Tot i que el L'argument [inici] i l'argument [compara] són opcionals, necessiteu l'argument [inici] si especifiqueu l'argument [compara] . En cas contrari, generarà un error.
  • Si un o tots dos de l'argument [inici] i l'argument [compara] és Nul , trobareu un error.
  • Els quatre valors especificats a l'argument [compare] realitzen quatre tipus diferents de comparació. S'esmenten a continuació:
VALOR CONSTANT DESCRIPTION

-1 vbUseCompareOption Realitza la comparació especificada a la instrucció Option Compare.
0 vbBinaryCompare Realitza una comparació binària.
1 vbTextCompare Realitza una comparació de text.
2 vbDatabaseCompare Realitza una comparació basada en la vostra base de dades .
  • Option Compare és una instrucció proporcionada abans que s'iniciï el codi VBA principal. Especifica si el codi cercarà una comparació binària o una comparació de text quan sigui necessari.

Opció de comparació de text

    • En termes simples , la comparació binària significa que distingeix entre majúscules i minúsculescomparació.
    • En termes simples , Comparació de text significa una comparació que no distingeix entre majúscules i minúscules.
  • Valor de retorn
    • Retorna la posició a la cadena1 des de la qual va començar la cadena2 .
    • En cas que no es trobi cadena2 dins de cadena1 començant des de la posició inici , retorna 0.
    • Si la cadena1 és de longitud zero, retorna 0.
    • Si la cadena2 és de longitud zero, retorna l'argument start .
    • I, finalment, si hi ha alguna de la cadena1 o string2 és Null , retorna un error.

3 exemples fàcils d'utilitzar la funció VBA InStr

En En aquesta secció, veurem tres exemples senzills d'aplicació de la funció VBA InStr a Excel. Vegem el primer exemple de la funció InStr als codis VBA.

1. Decidir si una adreça és una adreça de correu electrònic o no mitjançant la funció VBA InStr

Aquí hem pres un conjunt de dades que conté algunes adreces de contacte dels clients. El nostre objectiu aquí serà identificar si les adreces són adreces de correu electrònic o no.

Ara desenvoluparem un codi VBA mitjançant la funció InStr per identificar si es tracta d'una adreça de correu electrònic o no. Per fer-ho, seguiu els passos següents.

Passos:

  • Al principi, aneu a la pestanya Desenvolupador i seleccioneu Visual Basic ( O premeu Alt+F11) per obrir VBA finestra.

  • A continuació, a la finestra VBA , aneu a Insereix > Mòdul .

  • Després, al mòdul, enganxeu el codi següent:
3798

  • A més, hem creat una funció anomenada DECISIÓ . Decideix si una adreça és una adreça de correu electrònic o no. Apliquem la funció al conjunt de dades que tenim.
  • A la cel·la C5 , escriviu la fórmula següent i, a continuació, ompliu automàticament la resta de cel·les amb Fill Handle .
=DECISION(B5)

  • Com podem veure, hem identificat cada adreça tant si és una adreça de correu electrònic o no.

🎓 Com funciona el codi?

  • Funció DECISION(cadena1 com a cadena)

Primer, això crea una funció anomenada DECISION amb un argument de cadena anomenat cadena1 .

  • Atenuació de la posició com a enter

Declara una variable entera anomenada Posició .

  • Posició = InStr(1, cadena1, “@”, 0)

Això assigna el valor del Posicioneu la variable com a sortida de la funció InStr amb els arguments 1, cadena1, “@” i 0 . En resum, això assigna la posició a l'adreça on hi ha un “@” .

  • Si Posició = 0 Aleshores DECISIÓ = “No correu electrònic”

Assigna la sortida de la funció DECISIÓ com a “No correu electrònic” , si la Posició La variable és 0 , és a dir, no hi havia “@” a l'adreça.

(Recordeu que si no es troba cap cadena dins de la cadena donada, el

1>La funció InStr retorna 0 ).

  • En cas contrari DECISIÓ = "Correu electrònic"

Això assigna el sortida de la funció DECISIÓ com a “Correu electrònic” si hi havia un “@” a l'adreça. Així, les adreces on hi ha “@” es classifiquen com a Correu electrònic , i la resta es classifiquen com a “No correu electrònic” .

Lectures similars

  • Com utilitzar la funció UCASE de VBA a Excel (4 exemples)
  • Utilitzar la funció MsgBox a Excel VBA (Una directriu completa)
  • Com utilitzar la funció VBA SPLIT a Excel (5 exemples)
  • Utilitzar la funció LCase a VBA a Excel (amb 4 exemples)
  • Com utilitzar la funció de correcció a Excel VBA (4 exemples)

2. Utilització de la funció VBA InStr per Extreure l'extensió d'algunes adreces de correu electrònic

Aquí tenim una llista d'algunes adreces de correu electrònic d'alguns clients. Aquesta vegada extreurem l'extensió de l'adreça de correu electrònic com si tenen gmail.com o yahoo.com .

Per fer-ho, seguiu els passos següents.

Passos:

  • Per començar, com el mètode anterior, obriu un nou VBA mòdul i enganxeu el codi següent a la finestra.
4866

  • A més, hem creat una funció anomenada EXTENSIÓ . Extreu l'extensió de qualsevol adreça de correu electrònic.
  • A més, apliquem aquesta funció al conjunt de dades que tenim. Primer, introduïu aquesta fórmula a la cel·la C5 i, a continuació, feu doble clic a Omplir mànec .
=EXTENSION(B5)

  • Per últim, podem veure que hem extret correctament l'extensió de tots els correus electrònics.

🎓 Com funciona el codi?

  • Funció EXTENSIÓ(Correu electrònic com a cadena)

Això crea una funció nova anomenada EXTENSIÓ , amb un argument de cadena anomenat Correu electrònic .

  • Atenuació de la posició com a nombre enter

Aquesta part declara una variable entera anomenada Posició .

  • Posició = InStr(1, Correu electrònic, “@”, 0)

Això assigna el valor de Posicioneu la variable com a sortida de la funció InStr amb els arguments 1, Correu electrònic, “@” i 0 . En resum, això assigna la posició al Correu electrònic on hi ha un “@” .

  • EXTENSIÓ = Dreta(Correu electrònic, (Len (Correu electrònic) – Posició))

Aquesta part assigna la sortida de la funció EXTENSIÓ com a caràcters després del símbol “@” . Aquesta és l'extensió necessària del Correu electrònic .

3. Extreure el nom o el cognom d'un nom mitjançant la funció VBA InStr

Finalment, realitzarem una tasca diferent. Aquesta vegada tenim els noms d'alguns empleats deuna companyia. I intentarem crear una funció per extreure el nom o el cognom dels empleats.

Per fer-ho, seguiu els passos següents.

Passos:

  • En primer lloc, de manera similar al mètode 1 , enganxeu el codi següent en un mòdul nou a la finestra de VBA .
6922

  • Aquí hem creat una funció anomenada SHORTNAME que extreu el nom o el cognom d'un nom. Apliquem aquesta fórmula al nostre conjunt de dades.
  • Al principi, per extreure el nom, escriviu la fórmula següent a la cel·la C5 .
=SHORTNAME(B5,-1)

  • Per últim, per extreure els cognoms, anotem la fórmula següent a D5 :
=SHORTNAME(B5,1)

  • Després, si omplem automàticament la resta de cel·les amb Fill Handler , veurem el nostre resultat desitjat.

🎓 Com funciona el codi?

  • Funció SHORTNAME(Nom com a cadena, primer_o_últim com a nombre sencer)

Crea una funció nova anomenada SHORTNAME amb un argument String anomenat Nom i un argument enter anomenat First_or_Last .

  • Dim Break As Integer

Aquesta part declara una nova variable entera anomenada Break .

  • Break = InStr(1, Name, ” “, 0)

Assigna el valor de la variable Break com a sortida de la funció InStr amb els arguments 1, Nom, “ ” i 0 . En resum, això assigna la posició al Nom on hi ha un espai (" ").

  • Si primer_o_darrer = -1 Aleshores SHORTNAME = Left(Nom, Break – 1)

Aquesta línia assigna la sortida de la funció SHORTNAME com els caràcters abans de l' espai , si l'argument First_or_Last és -1. Aquest és el primer nom.

  • SHORTNAME = Right(Nom, Len(Nom) – Break)

Aquesta part assigna la sortida del SHORTNAME funcionen com els caràcters després de l' espai , si l'argument First_or_Last és 1. Aquest és el cognom.

Conclusió

D'aquesta manera, podeu escriure codis VBA amb la funció InStr que descobreix la posició d'una cadena específica dins d'una altra determinada. cadena i, a continuació, podeu crear les vostres pròpies funcions per a diversos usos. A més, si teniu cap pregunta, no dubteu a fer-nos-ho.

Hugh West és un entrenador i analista d'Excel molt experimentat amb més de 10 anys d'experiència en el sector. És llicenciat en Comptabilitat i Finances i Màster en Administració i Direcció d'Empreses. Hugh té una passió per l'ensenyament i ha desenvolupat un enfocament pedagògic únic que és fàcil de seguir i entendre. El seu coneixement expert d'Excel ha ajudat a milers d'estudiants i professionals de tot el món a millorar les seves habilitats i a destacar en les seves carreres. A través del seu bloc, Hugh comparteix els seus coneixements amb el món, oferint tutorials d'Excel gratuïts i formació en línia per ajudar les persones i les empreses a assolir tot el seu potencial.