Como atopar cadeas con VBA en Excel (8 exemplos)

  • Comparte Isto
Hugh West

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.
  • Por defecto, a función InStr calcula a posición do carácter contando desde 1, non desde a posición inicial. Entón, podes deixar isto en branco se queres.
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,
  • vbBinaryCompare -> realiza unha comparación binaria, devolve o valor 0
  • vbTextCompare -> realiza unha comparación de texto, devolve o valor 1
  • vbDatabaseCompare -> realiza unha comparación de base de datos, devolve o valor 2

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.

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.