Táboa de contidos
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.