Como atopar subcadeas usando VBA (9 xeitos)

  • Comparte Isto
Hugh West

Se estás a buscar algunhas das formas máis sinxelas de atopar subcadeas usando VBA, estás no lugar correcto. Despois de pasar por este artigo, poderás atopar a posición dunha subcadea ou extraer datos usando esta subcadea ou cambiar o formato dunha subcadea facilmente. Imos entrar no artigo.

Descargar libro de traballo

Contido de mostra

9 xeitos de atopar subcadeas usando VBA

Aquí teño o seguinte táboa de datos mediante a cal mostrarei as formas de atopar subcadeas nunha cadea usando VBA. Tamén tentarei mostrar as formas de atopar subcadeas nunha cadea aleatoria.

Realiza esta tarefa usando a versión Microsoft Excel 365 , podes usar calquera outra versión segundo a túa conveniencia.

Método 1: atopar subcadea nunha cadea usando VBA

Se queres atopar a subcadea desexada nunha cadea usando VBA, podes usar a función InStr no código VBA.

Paso-01 :

➤Vaia a Desenvolvedor Tab>> Opción Visual Basic

A continuación, abrirase o Editor de Visual Basic .

➤Vai a Inserir Tab>> Módulo Opción

Despois diso, crearase un Módulo .

Paso-02 :

➤Escriba o seguinte código

9598

Aquí, InStr(1, “ Creo que, polo tanto, estou”, “pensa”) devolverá a posición da subcadea dunha cadea. 1 é oposición inicial, " Creo que, polo tanto, estou" é a cadea onde atoparás a subcadea desexada e "pensa" é a subcadea que queres atopar. De forma predeterminada, distingue entre maiúsculas e minúsculas, así que teña coidado coas maiúsculas e minúsculas da subcadea que queres buscar.

➤Preme F5

Resultado :

Despois diso, obterá a seguinte Caixa de mensaxes que contén a posición da subcadea “think” .

Método 2: atopar unha subcadea que non distingue entre maiúsculas e minúsculas nunha cadea

Se queres atopar a subcadea desexada nunha cadea independentemente do caso usando VBA, siga isto método.

Paso-01 :

➤Siga Paso-01 de Método-1

3528

Aquí, vbTextCompare úsase para buscar subcadeas que non distinguen entre maiúsculas e minúsculas.

➤Preme F5

Resultado :

Entón, obterá a seguinte Caixa de mensaxes que contén a posición da subcadea “think” .

Podes facer o mesmo usando o seguinte código.

7741

Aquí, Opción de comparación de texto atopará unha subcadea que non distingue entre maiúsculas e minúsculas.

➤Prema F5

Resultado :

Despois, Obter a seguinte Caixa de mensaxes que contén a posición da subcadea “think” .

Método 3: Usando a función InstrRev en VBA

Aquí mostrarei o xeito de atopar unha subcadea desde o final de acadea.

Paso-01 :

➤Segue Paso-01 de Método-1

9725

InStrRev atopará a subcadea do lado dereito en lugar do esquerdo.

➤Preme F5

Resultado :

Entón, obterá a seguinte Caixa de mensaxes que contén a posición da segunda subcadea “I” do lado dereito.

Método-4: atopar a posición da subcadea nunha cadea nun intervalo de datos

Se queres atopar o carácter especial “@” no Identificación de correo electrónico e, a continuación, siga este método. Engadín aquí a Columna de posición para este fin.

Paso-01 :

➤Seguir Paso-01 de Método-1

8397

Creará unha función chamada FindSubstring (podes usar calquera outro nome)

valor é a referencia de cela que contén a cadea e declárase como Intervalo .

Paso -02 :

➤Seleccione a saída Cela E5

➤Escriba a seguinte función (creada por VBA )

=FindSubstring(D5)

D5 é a cela que contén a cadea.

➤Preme ENTER

➤Arrastre cara abaixo a Recheo da ferramenta Ferramenta

Resultado :

Despois, obterás as posicións do carácter especial @” no Id de correo electrónico .

Lecturas similares:

  • Como atoparCadena nunha cela usando VBA en Excel (2 métodos)
  • FindNext usando VBA en Excel (2 exemplos)
  • Como atopar cadea con VBA en Excel (8 exemplos)
  • VBA Buscar a última fila en Excel (5 formas)

Método 5: comprobando unha determinada subcadea en unha cadea nun intervalo de datos

Supoña que quere escribir Aprobado ou Non se corresponde cos nomes dos estudantes dependendo da columna Resultado onde se escribiu Pass ou Fall entre corchetes. Para atopar esta subcadea na columna do resultado e anótaa na columna de aprobación ou falla siga este método.

Paso-01 :

➤Siga o Paso-01 de Método-1

9382

Aquí, o intervalo de celas é C5:C10 que é a Columna do resultado

InStr(cell.value, “Pass”) > 0 é a condición na que o número é maior que cero (cando a cela contén “Aprobado” ) , a seguinte liña continuará e dará a saída na cela adxacente como Aprobado .

Se a condición se volve falsa significa que unha cela non contén ningún “Pass” , a liña debaixo de Else executarase e dará o valor de saída no cela adxacente como Fallo .

Este bucle continuará para cada cela.

➤Preme F5

Resultado :

Entón, obterá as seguintes saídas no Aceptar ou fallar columna.

Método 6: Comprobar unha determinada subcadea nunha cadea e extraer datos

Vou mostrar a forma de atopar os estudantes nomeados Michael na columna Nome do alumno e extrae os seus datos correspondentes mediante VBA neste método.

Paso-01 :

➤Siga Paso-01 de Método-1

6309

Aquí usei B100 como Intervalo da folla activa pero podes usar calquera intervalo segundo o teu uso.

InStr(1, Range("B" & i), "Michael") > 0 é a condición para comprobar se a cela a columna B contén Michael

Range("E" & icount & ":G" & icount) é o intervalo no que desexa os seus datos de saída e Range("B" & i & ":D" & i).value dará os valores das columnas B ata D .

➤Prema F5

Resultado :

Despois diso, obterá os seguintes datos extraídos para os estudantes que teñen o nome Michael .

Método 7: Buscando a subcadea para a palabra

Se queres atopar a subcadea como unha palabra, baixo este método.

Paso-01 :

➤Siga o Paso-01 de Método-1

5074

Comprobará se a cadea contén é e entón darase a súa posición

➤Preme F5

Resultado :

Despois, obterá a seguinte caixa de mensaxe que mostra a palabra atopada na posición:6 (a posición de é ).

Podes probarelimina este código para unha palabra que non estea na cadea.

➤Escriba o seguinte código

5473

➤Preme F5

Resultado :

Despois, aparecerá a seguinte caixa de mensaxe que mostra a palabra non atopada .

Método 8: Usando a función Instr e LEFT

Aquí explicarei a forma de atopar a posición dunha subcadea nunha cadea e extraer os textos antes desta subcadea usando VBA e a función ESQUERDA .

Paso-01 :

➤Siga o Paso-01 de Método-1

6936

j = InStr(txt, "is") é a posición da subcadea é e Left(txt, j - 1) extraerá as subcadeas antes de é .

➤Prema F5

Resultado :

Despois, recibirá a seguinte caixa de mensaxe que mostra Aquí (subcadea antes de é ).

Método 9: Negriña unha determinada subcadea nunha cadea

Podes poñer en negra as cualificacións antes dos corchetes na columna do resultado seguindo este método d.

Paso-01 :

➤Siga o Paso-01 de Método- 1

7290

txt = InStr(1, Cell, "(") devolverá a posición do primeiro corchete e Cell.Characters(1, txt - 1).Font.Bold fará a subcadea antes do primeiro corchete Negriña .

Paso-02 :

➤Seleccione a Columna do resultado

➤Ir a Desenvolvedor Tab>> Macros Opción

A continuación, unha MacroAparecerá o asistente.

➤Seleccione Boldingsubstring (o nome de código VBA) e despois Executar .

Resultado :

Despois diso, as cualificacións da Resultado Columna estarán en negra.

Sección de práctica

Para practicar vostede mesmo, proporcionamos unha sección Práctica como a continuación nunha folla chamada Práctica . Faino por ti mesmo.

Conclusión

Neste artigo tentei cubrir as formas máis sinxelas de atopar subcadeas usando VBA en Excel de forma eficaz. Espero que che resulte útil. Se tes algunha suxestión ou pregunta, non dubides en compartilas connosco.

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.