Com trobar cadena amb VBA a Excel (8 exemples)

  • Comparteix Això
Hugh West

La implementació de VBA és el mètode més eficaç, ràpid i segur per executar qualsevol operació a Excel. En aquest article, us mostrarem com trobar determinades cadenes en una altra cadena determinada mitjançant VBA a Excel.

Descarregueu la plantilla de pràctica

Vostè podeu descarregar la plantilla d'Excel de pràctica gratuïta des d'aquí.

VBA per trobar a String.xlsm

Funció InStr

Microsoft Excel té una funció integrada anomenada la funció InStr per trobar la posició de cadenes específiques en una cadena determinada.

Sintaxi genèrica:

InStr([start], string1, string2, [compare])

Aquí,

Arguments Obligatori/Opcional Definició
inici Opcional Posició inicial de la cerca.
  • Per defecte, la funció InStr calcula la posició del caràcter comptant des d'1, no des de la posició inicial. Per tant, podeu deixar-ho en blanc si voleu.
string1 Obligatori La cadena a cercar, cadena principal.
cadena2 Obligatori La cadena a cercar a la cadena principal .
compara Opcional La funció InStr distingeix entre majúscules i minúscules de manera predeterminada. Però si voleu executar un InStr que no distingeix entre majúscules i minúscules, podeu passar l'argument aquí per realitzar una certa comparació. Aquest argument pot ser el següentvalors,
  • vbBinaryCompare -> realitza una comparació binària, retorna el valor 0
  • vbTextCompare -> realitza una comparació de text, retorna el valor 1
  • vbDatabaseCompare -> realitza una comparació de base de dades, retorna el valor 2

Per defecte, InStr pren vbBinaryCompare com a argument de comparació.

8 exemples senzills per trobar la posició específica de la cadena en una cadena donada utilitzant VBA

Veiem alguns exemples senzills per obtenir les posicions de determinades cadenes en una cadena determinada utilitzant VBA .

1. VBA per trobar la posició del text a la cadena

A continuació es mostra un exemple de InStr per trobar la posició d'un text en una cadena.

  • Premeu Alt + F11 al teclat o aneu a la pestanya Desenvolupador -> Visual Basic per obrir Visual Basic Editor .

  • A la finestra de codi emergent, des de la barra de menú , feu clic a Insereix -> Mòdul .

  • Ara, a la finestra de codi, escriviu un programa senzill InStr dins d'un VBA Sub Procediment (vegeu més avall).
8556

El vostre codi ja està a punt per executar-se.

  • Premeu F5 al teclat o a la barra de menú, seleccioneu Executar -> Executeu Sub/UserForm . També podeu fer clic a la icona de reproducció petita a la barra del submenú per executar la macro.

Veureu que el el quadre de missatge emergent us donarà un númerodeclarant la posició del text que volies comprovar.

Explicació:

La nostra cadena principal, " Felicitat és una elecció ” és una oració de 21 lletres (amb espais) i volíem trobar la posició del text “ elecció ” en aquesta cadena. El text " elecció " va començar des de la 16a posició de la cadena principal, per tant, hem obtingut el número 16 com a sortida al quadre de missatge.

2. VBA per trobar text des d'una posició específica a la cadena

Ara esbrinem què passaria si volguéssim obtenir la posició d'un nombre determinat.

  • De la mateixa manera que abans, obriu Visual Basic Editor des de la pestanya Desenvolupador i Inseriu un mòdul a la finestra del codi.
  • A a la finestra del codi, escriviu un programa senzill InStr que es mostra a dalt i passeu el valor a l'argument inicial segons la posició des de la qual voleu comptar el text.
7902

  • A continuació, Executeu el codi.

Veureu que el quadre de missatge emergent apareixerà donar-vos un número que declari la posició del text a partir d'una posició determinada que volíeu comprovar.

Explicació:

Com ja sabíem (a partir de la discussió de la fase 1) que el text “ elecció ” partia de la posició de 16 , així que hem inserit dos “ elecció ” a la cadena principal i establiu 17 com a nostre1r paràmetre per saltar la primera " elecció ". Per tant, vam executar la macro anterior i ens va mostrar el número de posició 27 , que és exactament el número de posició de la segona " elecció " a la cadena donada.

3. VBA per trobar text amb la funció InStr que no distingeix entre majúscules i minúscules a String

Des de la introducció de la funció InStr ja sabeu que, per defecte, la funció InStr és sensible a majúscules i minúscules. Descobrim-ho amb un exemple.

Consulteu el codi VBA següent, on volíem trobar la posició de la paraula “ Elecció ” amb una «C» majúscula a la cadena « La felicitat és una opció » on l'elecció s'escriu amb una «c» petita .

  • Executeu el codi i cerqueu 0 com a sortida.

Això es deu al fet que la funció InStr tracta la majúscula “C” i la petita “c” de manera diferent. Així que va cercar la paraula " Choice " a la cadena i no va obtenir cap coincidència, així que va retornar 0 .

  • Per fer que la funció InStr no distingeix entre majúscules i minúscules , establiu l'argument de comparació a vbTextCompare (vegeu més avall).
6598

  • Executeu el codi.

Obtràs la posició del text de la cadena, tant si el text s'escriu en majúscules com en minúscules .

4. VBA per trobar text des de la dreta d'una cadena

Fins ara, la funció InStr només ens donava la posició des del costat esquerre de la cadena. Però què passa si voleu trobar la posició del text des del costat dret de la cadena.

La funció InStrRev cerca des de la dreta. La funció InStrRev funciona de manera molt semblant a la funció InStr i us trobarà la posició d'un text des del costat dret de la cadena.

Consulteu els exemples següents per entendre la diferència.

  • Si executem el codi següent amb la funció InStr aleshores,

ens dóna la posició ( 16 ) del primer text “ elecció ”.

  • Però si executem el mateix codi amb la funció InStrRev aleshores,

ens dóna la posició ( 27 ) de l'últim text “ elecció ”.

Lectures similars:

  • FindNext utilitzant VBA a Excel (2 exemples)
  • Com trobar i substituir mitjançant VBA (11 maneres)
  • Trobar la concordança exacta amb VBA a Excel (5 maneres)

5. VBA per trobar la posició d'un caràcter a la cadena

També podeu trobar la posició d'un caràcter determinat en una cadena de la mateixa manera que heu trobat el text.

  • Copieu el següent codi a la vostra finestra de codi VBA
2148

  • I Executeu la macro.

El primer " e " de la nostra cadena donada és ala posició del número 7 .

6. VBA per trobar una subcadena en una cadena

Aquí aprendrem a trobar si una cadena conté una subcadena o no.

Per aconseguir-ho, hem per executar una Declaració IF al nostre codi.

  • De la mateixa manera que abans, obriu Editor de Visual Basic des de la pestanya Desenvolupador i Inseriu un mòdul a la finestra del codi.
  • A la finestra del codi, copieu el codi següent i enganxeu-lo.
8276

El vostre El codi ja està a punt per executar-se.

  • Executeu la macro.

Si la vostra cadena conté la subcadena aleshores obtindreu una concordança trobada , en cas contrari, no tornarà cap coincidència trobada. En el nostre exemple, volíem esbrinar si la nostra cadena principal " La felicitat és una opció " conté la paraula " elecció " o no. A mesura que ho fa, obtenim un resultat Coincidència trobada .

7. VBA per trobar una cadena en un interval de cel·les

Podeu cercar un text determinat en un interval de cel·les de cadena i retornar una cadena determinada.

Mireu l'exemple següent on farem trobeu " Dr. " i quan hi hagi una coincidència tornarà " Doctor ".

  • A continuació es mostra el codi per obtenir el resultat comentat anteriorment,
5271

  • Executeu el codi i el resultat es mostra a continuació

  • Podeu modificar la macro segons les vostres necessitats. Per exemple, si voleuper trobar " Prof. " a qualsevol cel·la de la cadena i obtenir " Professor " com a retorn, i després simplement passar " Prof. ” com a valor en lloc de “ Dr ”. a la quarta línia de la macro i " Professor " en lloc de " Doctor " a la cinquena línia de la macro i definiu el número d'interval de cel·les en conseqüència.

8. VBA per trobar una cadena en una cel·la

També podeu cercar un text determinat en una única cel·la de cadena i retornar una cadena determinada.

  • Copieu el codi següent i enganxeu-lo a la finestra del codi.
8025

Cercarà “ Dr. " a Cel·la B5 i si troba la coincidència, retorna " Doctor " a Cel·la C5 .

  • Podeu modificar la macro segons les vostres necessitats. Per exemple, si voleu trobar " Prof. " a qualsevol cel·la de la cadena i obtenir " Professor " com a retorn, a continuació, simplement passa " Prof. " com a valor en lloc de " Dr ". a la 2a línia de la macro i “ Professor ” en lloc de “ Doctor ” a la 3a línia de la macro i definiu el número de referència de la cel·la en conseqüència.

Conclusió

Aquest article us va mostrar com trobar determinats textos en cadena a Excel mitjançant la macro VBA. Espero que aquest article us hagi estat molt profitós. No dubteu a fer qualsevol pregunta al respecteel tema.

Hugh West és un entrenador i analista d'Excel molt experimentat amb més de 10 anys d'experiència en el sector. És llicenciat en Comptabilitat i Finances i Màster en Administració i Direcció d'Empreses. Hugh té una passió per l'ensenyament i ha desenvolupat un enfocament pedagògic únic que és fàcil de seguir i entendre. El seu coneixement expert d'Excel ha ajudat a milers d'estudiants i professionals de tot el món a millorar les seves habilitats i a destacar en les seves carreres. A través del seu bloc, Hugh comparteix els seus coneixements amb el món, oferint tutorials d'Excel gratuïts i formació en línia per ajudar les persones i les empreses a assolir tot el seu potencial.