Tabla de contenido
Aplicación de VBA es el método más eficaz, rápido y seguro para ejecutar cualquier operación en Excel. En este artículo, le mostraremos cómo encontrar ciertas cadenas en otra cadena dada utilizando VBA en Excel.
Descargar plantilla de prácticas
Puede descargar la plantilla práctica gratuita de Excel desde aquí.
VBA para encontrar en String.xlsm
Función InStr
Microsoft Excel tiene una función incorporada llamada la función InStr para encontrar la posición de cadenas específicas en una Cadena dada.
Sintaxis genérica:
InStr([inicio], cadena1, cadena2, [comparar])
Toma,
Argumentos | Obligatorio/ Facultativo | Definición |
---|---|---|
iniciar | Opcional | Posición inicial de la búsqueda.
|
cadena1 | Requerido | La cadena en la que buscar, Primary String. |
cadena2 | Requerido | La cadena a buscar en la cadena primaria. |
compare | Opcional | En InStr distingue entre mayúsculas y minúsculas por defecto, pero si desea ejecutar una función que no distinga entre mayúsculas y minúsculas InStr Este argumento puede tener los siguientes valores,
Por defecto, InStr toma vbBinaryCompare como argumento de comparación. |
8 Ejemplos Fáciles para Encontrar la Posición de una Cadena Específica en una Cadena Dada Usando VBA
Veamos algunos ejemplos sencillos para obtener las posiciones de determinadas cadenas en una cadena dada utilizando VBA .
1. VBA para encontrar la posición de un texto en una cadena
A continuación se muestra un ejemplo de InStr para encontrar la posición de un texto en una cadena.
- Pulse Alt + F11 en su teclado o vaya a la pestaña Desarrollador -> Visual Basic para abrir Editor de Visual Basic .
- En la ventana de código emergente, en la barra de menús, haga clic en Insertar -> Módulo .
- Ahora, en la ventana de código, escribe un simple InStr dentro de un Subprocedimiento VBA (véase más abajo).
Sub INSTR_Example() MsgBox InStr("La felicidad es una elección", "elección") End Sub
Su código ya está listo para ejecutarse.
- Pulse F5 en el teclado o, en la barra de menús, seleccione Run -> Run Sub/UserForm También puede hacer clic en el botón pequeño icono Play en la barra del submenú para ejecutar la macro.
Verá que el cuadro de mensaje emergente le dará un número que declara la posición del texto que desea comprobar.
Explicación:
Nuestra cadena principal, " La felicidad es una elección " es una frase de 21 letras (con espacios) y queríamos encontrar la posición del texto " elección "El texto " elección " partió de la posición 16 de la cadena primaria, por lo que obtuvimos el número 16 como nuestra salida en el cuadro de mensaje.
2. VBA para Buscar Texto a partir de una Posición Específica en una Cadena
Ahora vamos a averiguar qué pasaría si quisiéramos obtener la posición a partir de un número determinado.
- De la misma manera que antes, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- En la ventana de código, escriba un simple InStr mostrado arriba y pase el valor en el argumento start de acuerdo a la posición desde la que quiere contar su texto.
Sub INSTR_Example() MsgBox InStr(17, "La felicidad es una elección", "elección") End Sub
- Siguiente, Ejecutar el código.
Verá que el cuadro de mensaje emergente le dará un número que declara la posición del texto partiendo de una posición determinada que querías comprobar.
Explicación:
Como ya sabíamos (por el debate de la fase 1) que el texto " elección " partió de la posición de 16 por lo que insertamos dos " elección " en la cadena primaria y establezca 17 como primer parámetro para omitir el primer " elección ". Así que Ejecutar la macro anterior y nos mostró la posición número 27 que es exactamente el número de posición del segundo " elección " en la cadena dada.
3. VBA para Buscar Texto con la Función InStr insensible a mayúsculas y minúsculas en String
Desde la introducción del InStr ya sabe que, por defecto, la función InStr distingue entre mayúsculas y minúsculas. Averigüémoslo con un ejemplo.
Véase lo siguiente VBA donde queríamos encontrar la posición de la palabra " Elección " con un C mayúscula en la cadena " La felicidad es una elección " donde elección se escribe con "c" minúscula .
- Ejecutar el código y encontrar 0 como salida.
Esto se debe a que el InStr función trata C mayúscula y "c" minúscula de forma diferente. Así que buscó la palabra " Elección " en la cadena y no obtuvo ninguna coincidencia, por lo que devolvió 0 .
- Para que el InStr función distingue entre mayúsculas y minúsculas establece el argumento compare en vbTextCompare (véase más abajo).
Sub INSTR_Example() MsgBox InStr(1, "La felicidad es una elección y elección", "Elección", vbTextCompare) End Sub
- Ejecutar el código.
Obtendrá el posición del texto de la cadena, si el texto está escrito en mayúsculas o minúsculas .
4. VBA para Buscar Texto a la Derecha de una Cadena
Hasta ahora el InStr sólo nos daba la posición desde el lado izquierdo de la cadena. Pero ¿qué pasa si quieres encontrar la posición del texto desde el lado derecho de la cadena?
La función InStrRev busca por la derecha. El InStrRev funciona de forma muy similar a la función InStr y te buscará la posición de un texto de la carpeta lado derecho de la cadena.
Vea los siguientes ejemplos para entender la diferencia.
- Si ejecutamos el siguiente código con el InStr función entonces,
nos da la posición ( 16 ) del primer texto " elección ".
- Pero si ejecutamos el mismo código con el InStrRev Función entonces,
nos da la posición ( 27 ) del último texto " elección ".
Lecturas similares:
- FindNext Usando VBA en Excel (2 Ejemplos)
- Cómo buscar y reemplazar utilizando VBA (11 maneras)
- Buscar coincidencia exacta usando VBA en Excel (5 maneras)
5. VBA para Encontrar la Posición de un Carácter en una Cadena
También puede encontrar la posición de un determinado carácter en una cadena del mismo modo que encontró texto.
- Copie el siguiente código en su VBA ventana de código
Sub Find_Character() Dim z As Long z = InStr("La felicidad es una elección", "e") MsgBox z End Sub
- Y Ejecutar la macro.
La primera " e "en nuestra cadena dada está en el número 7 posición.
6. VBA para Buscar Subcadena en una Cadena
Aquí aprenderemos a encontrar si una cadena contiene un subcadena o no.
Para conseguirlo, tenemos que ejecutar un Declaración IF en nuestro código.
- De la misma manera que antes, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
- En la ventana de código, copia el siguiente código y pégalo.
Public Sub FindSub() If InStr("La felicidad es una elección", "elección") = 0 Then MsgBox "No se han encontrado coincidencias" Else MsgBox "Se han encontrado coincidencias" End If End Sub
Su código ya está listo para ejecutarse.
- Ejecutar la macro.
Si su contiene la subcadena entonces obtendrá un coincidencia encontrada En nuestro ejemplo, queríamos averiguar si nuestra cadena primaria " La felicidad es una elección "contiene la palabra " elección "Si lo hace, obtenemos un Coincidencia encontrada resultado.
7. VBA para Buscar Cadena en un Rango de Celdas
Puede buscar un texto determinado en un rango de celdas de cadena y devolver una cadena determinada.
Mira el siguiente ejemplo donde encontraremos " Dr. " y cuando haya una coincidencia devolverá " Doctor ".
- A continuación se muestra el código para obtener el resultado discutido anteriormente,
Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub
- Ejecutar el código y el resultado se muestra a continuación
- Puede modificar la macro en función de sus necesidades. Por ejemplo, si desea buscar " Prof. " en cualquier celda de la cadena, y obtener " Profesor " como retorno, entonces simplemente pasa " Prof. "como valor en lugar de " Dr ." en la 4ª línea de la macro y " Profesor " en lugar de " Doctor " en la 5ª línea de la macro y defina el número de rango de celdas en consecuencia.
8. VBA para Buscar Cadena en una Celda
También puede buscar un texto determinado en una sola celda de cadena y devuelve una cadena determinada.
- Copie el siguiente código y péguelo en la ventana de código.
Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub
Buscará " Dr. " en Célula B5 y si encuentra la coincidencia devuelve " Doctor " en Célula C5 .
- Puede modificar la macro en función de sus necesidades. Por ejemplo, si desea buscar " Prof. " en cualquier celda de la cadena, y obtener " Profesor " como retorno, entonces simplemente pasa " Prof. "como valor en lugar de " Dr ." en la 2ª línea de la macro y " Profesor " en lugar de " Doctor " en la 3ª línea de la macro y defina el número de referencia de la celda en consecuencia.
Conclusión
Este artículo muestra cómo encontrar ciertos textos en una cadena en Excel utilizando Macro VBA. Espero que este artículo le haya sido de gran utilidad. No dude en formular cualquier pregunta relacionada con el tema.