Táboa de contidos
Implementar VBA é o método máis eficaz, rápido e seguro para executar calquera operación en Excel. Neste artigo, mostrarémosche como atopar determinadas cadeas noutra cadea determinada usando VBA en Excel.
Descarga o modelo de práctica
Ti pode descargar o modelo de Excel de práctica gratuíta desde aquí.
VBA para atopar en String.xlsm
Función InStr
Microsoft Excel ten unha función incorporada chamada a función InStr para atopar a posición de cadeas específicas nunha cadea determinada.
Sintaxe xenérica:
InStr([start], string1, string2, [compare])
Aquí,
Argumentos | Requirido/Opcional | Definición |
---|---|---|
inicio | Opcional | Posición inicial da busca.
|
cadea1 | Obrigatorio | A cadea na que se busca, cadea principal. |
cadea2 | Obrigatorio | A cadea que se vai buscar na cadea principal . |
comparar | Opcional | A función InStr distingue entre maiúsculas e minúsculas por defecto. Pero se queres executar un InStr que non distinga entre maiúsculas e minúsculas, podes pasar aquí o argumento para realizar unha determinada comparación. Este argumento pode ser o seguintevalores,
Por defecto, InStr toma vbBinaryCompare como argumento de comparación. |
8 exemplos sinxelos para atopar posicións de cadeas específicas nunha cadea dada usando VBA
Imos ver algúns exemplos sinxelos para obter as posicións de determinadas cadeas nunha cadea dada usando VBA .
1. VBA para atopar a posición do texto na cadea
Abaixo amósase un exemplo de InStr para atopar a posición dun texto nunha cadea.
- Preme Alt + F11 no teu teclado ou vai á pestana Desenvolvedor -> Visual Basic para abrir Editor de Visual Basic .
- Na xanela do código emerxente, desde a barra de menú , fai clic en Inserir -> Módulo .
- Agora, na xanela do código, escribe un programa sinxelo InStr dentro dun VBA Sub Procedemento (consulta a continuación).
2501
O teu código xa está listo para executarse.
- Preme F5 no teu teclado ou na barra de menús selecciona Executar -> Executar Sub/UserForm . Tamén podes facer clic na icona de reprodución pequena da barra do submenú para executar a macro.
Verás que o a caixa de mensaxe emerxente darache un númerodeclarando a posición do texto que querías comprobar.
Explicación:
A nosa cadea principal, “ Felicidade is a choice ” é unha oración de 21 letras (con espazos) e queriamos atopar a posición do texto “ choice ” nesa cadea. O texto " elección " comezou a partir da posición 16 da cadea principal, polo que obtivemos o número 16 como saída na caixa de mensaxes.
2. VBA para atopar texto desde unha posición específica en cadea
Agora imos descubrir que pasaría se quixeramos obter a posición dun número determinado.
- Do mesmo xeito que antes, abra Editor de Visual Basic desde a pestana Desenvolvedor e Insira un Módulo na xanela de código.
- En na xanela do código, escribe un programa sinxelo InStr que se mostra arriba e pasa o valor no argumento de inicio segundo a posición desde a que queres contar o teu texto.
8737
- A continuación, Executa o código.
Verás que a caixa de mensaxe emerxente aparecerá darche un número que declara a posición do texto a partir dunha determinada posición que querías comprobar.
Explicación:
Como xa sabiamos (pola discusión da fase 1) que o texto “ elección ” partiu da posición de 16 , polo que inserimos dous “ elección ” na cadea principal e establece 17 como o noso1º parámetro para omitir a primeira " opción ". Entón, Executamos a macro anterior e mostrounos o número de posición 27 , que é exactamente o número de posición da segunda " elección " na cadea dada.
3. VBA para atopar texto coa función InStr que non distingue entre maiúsculas e minúsculas en String
Desde a introdución da función InStr xa sabes que, por defecto, a función InStr distingue entre maiúsculas e minúsculas. Descubrímolo cun exemplo.
Consulte o seguinte código VBA , onde queriamos atopar a posición da palabra “ Escolla ” cunha «C» en maiúscula na cadea « A felicidade é unha elección » onde a elección se escribe cunha «c» pequena .
- Executar o código e buscar 0 como a nosa saída.
Isto débese a que a función InStr trata maiúscula “C” e pequena “c” de forma diferente. Así que buscou a palabra " Choice " na cadea e non obtivo ningunha coincidencia, polo que devolveu 0 .
- Para facer que a función InStr insensible entre maiúsculas e minúsculas , estableza o argumento de comparación en vbTextCompare (consulte a continuación).
2285
- Executar o código.
Obterás a posición do texto da cadea, tanto se o texto está escrito en maiúsculas como en minúsculas .
4. VBA para buscar texto á dereita dunha cadea
Ata agora a función InStr só nos daba a posición desde o lado esquerdo da cadea. Pero que pasa se queres atopar a posición do texto desde o lado dereito da cadea.
A función InStrRev busca desde a dereita. A función InStrRev funciona de xeito moi semellante á función InStr e atoparache a posición dun texto desde o lado dereito da cadea.
Consulte os seguintes exemplos para comprender a diferenza.
- Se executamos o seguinte código coa función InStr ,
proporciónanos a posición ( 16 ) do primeiro texto “ elección ”.
- Pero se executamos o mesmo código coa función InStrRev entón,
danos a posición ( 27 ) do último texto “ elección ”.
Lecturas similares:
- FindNext usando VBA en Excel (2 exemplos)
- Como atopar e substituír usando VBA (11 xeitos)
- Busca a coincidencia exacta usando VBA en Excel (5 xeitos)
5. VBA para atopar a posición dun carácter na cadea
Tamén podes atopar a posición dun determinado carácter nunha cadea do mesmo xeito que atopou o texto.
- Copie o seguinte código na xanela do código VBA
4631
- E Executar a macro.
O primeiro " e " da nosa cadea dada está eno número 7 posición.
6. VBA para atopar subcadea nunha cadea
Aquí aprenderemos a descubrir se unha cadea contén unha subcadea ou non.
Para obtelo, temos para executar unha Instrucción IF no noso código.
- Do mesmo xeito que antes, abra o Editor de Visual Basic desde a pestana Desenvolvedor e Insira un Módulo na xanela do código.
- Na xanela do código, copie o seguinte código e pégueo.
5585
O seu agora o código está listo para executarse.
- Executar a macro.
Se a súa cadea contén a subcadea entón obterá unha coincidencia atopada , se non, non devolverá ningunha coincidencia atopada. No noso exemplo, queriamos descubrir se a nosa cadea principal " A felicidade é unha elección " contén a palabra " elección " ou non. Ao facelo, obtemos un resultado Coincidencia atopada .
7. VBA para atopar cadeas nun intervalo de celas
Podes buscar un determinado texto nun intervalo de celas de cadea e devolver unha determinada cadea.
Mira o seguinte exemplo onde imos atopar " Dr. " e cando haxa unha coincidencia devolverá " Doctor ".
- Abaixo está o código para obter o resultado discutido anteriormente,
5823
- Executa o código e o resultado móstrase a continuación
- Podes modificar a macro segundo a túa necesidade. Por exemplo, se querespara atopar " Prof. " en calquera cela da cadea e obter " Profesor " como devolución e, a continuación, simplemente pase " Prof. ” como valor en lugar de “ Dr ”. na cuarta liña da macro e " Profesor " en lugar de " Doctor " na quinta liña da macro e defina o número de intervalo de celas en consecuencia.
8. VBA para atopar cadeas nunha cela
Tamén pode buscar un determinado texto nunha única cela de cadea e devolver unha determinada cadea.
- Copia o seguinte código e pégao na xanela do código.
9452
Buscará “ Dr. " na Cela B5 e se atopa a coincidencia, devolve " Doctor " na Cela C5 .
- Podes modificar a macro segundo a túa necesidade. Por exemplo, se queres atopar " Prof. " en calquera cela da cadea e obter " Profesor " como devolución, a continuación, simplemente pase " Prof. " como valor en lugar de " Dr ". na 2a liña da macro e “ Profesor ” en lugar de “ Doctor ” na 3a liña da macro e defina o número de referencia da cela en consecuencia.
Conclusión
Este artigo mostrouche como atopar certos textos en cadea en Excel usando macro VBA. Espero que este artigo che resulte moi beneficioso. Non dubides en facer calquera dúbida ao respectoo tema.