Como usar a función InStr en VBA (3 exemplos sinxelos)

  • Comparte Isto
Hugh West

Mentres traballamos con códigos VBA de Excel, atopamos algunhas funcións integradas que converten unha tarefa complexa nun pequeno código dunha soa liña. InStr é unha función dispoñible en Excel VBA que busca unha cadea particular dentro doutra cadea dada a partir dunha posición determinada. Hoxe mostrarei como pode usar a función InStr en VBA para buscar unha cadea específica dentro doutra cadea determinada.

Descargar o libro de prácticas

InStr Function.xlsm

Introdución á VBA InStr Function

  • Resumo

Busca unha cadea específica dentro dunha cadea determinada, comezando desde unha posición determinada. Se atopa unha coincidencia, devolve a posición na cadea dada desde onde comezou a coincidencia.

  • Sintaxe

InStr([inicio ],cadea1,cadea2,[comparar])

  • Argumentos
ARGUMENTO REQUISITO DESCRICIÓN

[inicio] Opcional A posición desde a que comezará a buscar. O valor predeterminado é 1.
cadea1 Requirido A cadea na que busca unha determinada cadea.
cadea2 Requirido A cadea que busca dentro dunha cadea determinada.
[comparar] Opcional Un valor numérico entre {-1,0,1,2} que especifica o tipo de comparación. Oo valor predeterminado é -1 (vbUseCompareOption). Se non se especifica a instrución Option Compare, realice a comparación binaria.

Nota:

  • Aínda que o O argumento [inicio] e o argumento [comparar] son opcionais, precisa o argumento [inicio] se especifica o argumento [comparar] . En caso contrario, provocará un erro.
  • Se un dos argumentos [inicio] e o argumento [comparar] ou os dous son Nulo , terás un erro.
  • Os catro valores especificados no argumento [comparar] realizan catro tipos diferentes de comparación. Menciónanse a continuación:
VALOR CONSISTENTE DESCRICIÓN

-1 vbUseCompareOption Realiza a comparación especificada en a instrución Option Compare.
0 vbBinaryCompare Realiza unha comparación binaria.
1 vbTextCompare Realiza unha comparación de texto.
2 vbDatabaseCompare Realiza unha comparación baseada na súa base de datos .
  • Option Compare é unha instrución proporcionada antes de que se inicie o código VBA principal. Especifica se o código buscará unha comparación binaria ou unha comparación de texto cando sexa necesario.

Opción de comparación de texto

    • En termos sinxelos , a comparación binaria significa que distingue entre maiúsculas e minúsculascomparación.
    • En termos sinxelos , Comparación de texto significa comparación que non distingue entre maiúsculas e minúsculas.
  • Valor de retorno
    • Devolve a posición na cadea1 desde a que comezou a cadea2 .
    • No caso de que non se atope cadea2 dentro de cadea1 a partir da posición inicio , devolve 0.
    • Se a cadea1 é de lonxitude cero, devolve 0.
    • Se a cadea2 é de lonxitude cero, devolve o argumento start .
    • E, finalmente, se algunha das cadea1 ou string2 é Null , devolve un erro.

3 exemplos sinxelos de usar a función VBA InStr

In nesta sección, veremos tres exemplos sinxelos de aplicación da función VBA InStr en Excel. Vexamos o primeiro exemplo da función InStr en códigos VBA.

1. Decidir se un enderezo é un enderezo de correo electrónico ou non usando a función VBA InStr

Aquí, tomamos un conxunto de datos que contén algúns enderezos de contacto dos clientes. O noso obxectivo aquí será identificar se os enderezos son enderezos de correo electrónico ou non.

Agora desenvolveremos un código VBA mediante a función InStr para identificar se é un enderezo de correo electrónico ou non. Para facelo, siga os pasos seguintes.

Pasos:

  • Ao principio, vaia á pestana Desenvolvedor e seleccione Visual Basic (Ou prema Alt+F11) para abrir VBA xanela.

  • A continuación, na xanela VBA , vaia a Inserir > Módulo .

  • Despois diso, no módulo, pega o seguinte código:
9684

  • Ademais, creamos unha función chamada DECISIÓN . Decide se un enderezo é un enderezo de correo electrónico ou non. Apliquemos a función ao conxunto de datos que temos.
  • Na cela C5 , escriba a seguinte fórmula e, a continuación, enche automaticamente o resto das celas usando Recheo de control .
=DECISION(B5)

  • Como podemos ver, identificamos cada enderezo se é un enderezo de correo electrónico ou non.

🎓 Como funciona o código?

  • Función DECISION(string1 As String)

Primeiro, isto crea unha función chamada DECISION cun argumento de cadea chamado cadea1 .

  • Dim posición como enteiro

Declara unha variable enteira chamada Posición .

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

Isto asigna o valor do Posicione a variable como saída da función InStr cos argumentos 1, cadea1, “@” e 0 . En resumo, asígnase a posición no enderezo onde hai un “@” .

  • Se Posición = 0 Entón DECISIÓN = “Non correo electrónico”

Asigna a saída da función DECISIÓN como “Non correo electrónico” , se a Posición a variable é 0 , é dicir, non había “@” no enderezo.

(Lembre que se non se atopa algunha cadea dentro da cadea dada, o InStr devolve 0 ).

  • Demáis DECISIÓN = “Correo electrónico”

Esto asigna o saída da función DECISION como “Correo electrónico” se había un “@” no enderezo. Así, os enderezos onde hai o “@” clasifícanse como Correo electrónico e o resto clasifícanse como “Non correo electrónico” .

Lecturas similares

  • Como usar a función UCASE de VBA en Excel (4 exemplos)
  • Usar a función MsgBox en Excel VBA (Unha directriz completa)
  • Como usar a función VBA SPLIT en Excel (5 exemplos)
  • Usar a función LCase en VBA en Excel (Con 4 exemplos)
  • Como usar a función de corrección en Excel VBA (4 exemplos)

2. Utilizar a función VBA InStr para Extraer a extensión dalgúns enderezos de correo electrónico

Aquí temos unha lista de algúns enderezos de correo electrónico dalgúns clientes. Nesta ocasión extraeremos a extensión do enderezo de correo electrónico como se teñen gmail.com ou yahoo.com .

Para facelo, siga os pasos seguintes.

Pasos:

  • Para comezar, como o método anterior, abra un novo VBA módulo e pega o seguinte código na xanela.
7283

  • Ademais, creamos unha función chamada EXTENSIÓN . Extrae a extensión de calquera enderezo de correo electrónico.
  • Ademais, apliquemos esta función ao conxunto de datos que temos. Primeiro, introduza esta fórmula na cela C5 e, a continuación, prema dúas veces no Recheo de control .
=EXTENSION(B5)

  • Por último, podemos ver que extraemos con éxito a extensión de todos os correos electrónicos.

🎓 Como funciona o código?

  • Función EXTENSIÓN(Correo electrónico como cadea)

Isto crea unha nova función chamada EXTENSIÓN , cun argumento de cadea chamado Correo electrónico .

  • Atenuar posición como número enteiro

Esta parte declara unha variable enteira chamada Posición .

  • Posición = InStr(1, Correo electrónico, “@”, 0)

Isto asigna o valor do Posición da variable como saída da función InStr cos argumentos 1, Correo electrónico, “@” e 0 . En resumo, asígnase a posición no Correo electrónico onde hai un “@” .

  • EXTENSIÓN = Right(Correo electrónico, (Len (Correo electrónico) – Posición))

Esta parte asigna a saída da función EXTENSIÓN como os caracteres despois do símbolo “@” . Esta é a extensión necesaria do Correo electrónico .

3. Extraer o nome ou apelido dun nome usando a función VBA InStr

Finalmente, realizaremos unha tarefa diferente. Nesta ocasión temos os nomes dalgúns empregados deunha empresa. E tentaremos crear unha función para extraer o nome ou o apelido dos empregados.

Para facelo, siga os pasos seguintes.

Pasos:

  • Primeiro, de xeito similar ao método 1 , pega o código a continuación nun módulo novo na xanela de VBA .
4594

  • Aquí creamos unha función chamada SHORTNAME que extrae o nome ou o apelido dun nome. Apliquemos esta fórmula ao noso conxunto de datos.
  • Ao principio, para extraer o nome, escriba a fórmula a continuación na cela C5 .
=SHORTNAME(B5,-1)

  • Por último, para extraer os apelidos, anotamos a seguinte fórmula en D5 :
=SHORTNAME(B5,1)

  • Despois, se enchemos automaticamente o resto das celas con Xestor de recheo , veremos o noso resultado desexado.

🎓 Como funciona o código?

  • Función SHORTNAME(nome como cadea, primeiro_ou_último como número enteiro)

Crea unha nova función chamada SHORTNAME cun argumento String chamado Nome e un argumento enteiro chamado First_or_Last .

  • Dim Break As Integer

Esta parte declara unha nova variable enteira chamada Break .

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

Asigna o valor da variable Break como saída da función InStr cos argumentos 1, Nome, “ ” e 0 . En resumo, asígnase a posición no Nome onde hai un espazo (“”).

  • Se Primeiro_ou_Último = -1 Entón SHORTNAME = Esquerda(Nome, Break – 1)

Esta liña atribúe a saída da función SHORTNAME como os caracteres antes do espazo , se o argumento Primeiro_ou_Último é -1. Este é o primeiro nome.

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

Esta parte asigna a saída do SHORTNAME funcionan como os caracteres despois do espazo , se o argumento First_or_Last é 1. Este é o apelido.

Conclusión

Deste xeito, pode escribir códigos VBA coa función InStr que descobre a posición dunha cadea específica dentro doutra determinada. cadea e, a continuación, pode crear as súas propias funcións para unha variedade de usos. Ademais, se tes algunha dúbida, non dubides en preguntarnos.

Hugh West é un adestrador e analista de Excel altamente experimentado con máis de 10 anos de experiencia na industria. É Licenciado en Contabilidade e Finanzas e Máster en Administración de Empresas. Hugh ten unha paixón polo ensino e desenvolveu un enfoque docente único que é fácil de seguir e comprender. O seu coñecemento experto de Excel axudou a miles de estudantes e profesionais de todo o mundo a mellorar as súas habilidades e a destacar nas súas carreiras. A través do seu blog, Hugh comparte os seus coñecementos co mundo, ofrecendo titoriais de Excel gratuítos e formación en liña para axudar ás persoas e ás empresas a alcanzar todo o seu potencial.