Ayer, recibí un correo electrónico de uno de mis lectores: junio.
Ella quería saber cómo aplicar el formato de fuente en negrita a una parte específica de una cadena dentro de una celda. Por ejemplo, aplique el formato en negrita solo a la palabra «Hola» de «Hola mundo».
Y quería hacer esto para cientos de celdas a la vez.
Dado que hay no hay una funcionalidad incorporada en Excel que pueda hacer eso, creé una macro simple que usa la función Excel VBA InStr (verá cómo hacer esto en el Ejemplo 4 de este tutorial).
Pero primero, veamos ¡cómo funciona la función Excel VBA InStr!
Este tutorial cubre:
Función Excel VBA InStr
En este tutorial, explicaré el uso de la función InStr en Excel VBA y veré algunos ejemplos prácticos donde se puede usar.
Función InStr de Excel VBA – Introducción
La función InStr encuentra la posición de una subcadena especificada dentro de la cadena y devuelve la primera posición de su aparición.
Por ejemplo, si desea encontrar la posición de ‘x’ en ‘Excel’, usando la función Excel VBA InStr devolvería 2.
Sintaxis de la función InStr
- – (argumento opcional) este es un valor entero que le dice a la función InStr la posición inicial desde la cual debe comenzar a buscar. Por ejemplo, si quiero que la búsqueda comience desde el principio, ingresaré el valor como 1. Si quiero que comience con el tercer carácter en adelante, usaré 3. Si se omite, se toma el valor predeterminado de 1.
- Cadena1: esta es la cadena principal (o la cadena principal) en la que desea buscar. Por ejemplo, si busca la posición de x en Excel, la cadena 1 sería «Excel».
- Cadena2: esta es la subcadena que está buscando. Por ejemplo, si buscando la posición de x en Excel, String2 sería x.
- – (argumento opcional) Puede especificar uno de los siguientes tres valores para el argumento:
- vbBinaryCompare – Esto haría un carácter por comparación de caracteres. Por ejemplo, si está buscando ‘x’ en ‘Excel’, devolverá 2, pero si está buscando ‘X’ en ‘Excel’, devolverá 0 ya que X está en la parte superior caso. También puede usar 0 en lugar de vbBinaryCompare. Si se omite el argumento, se toma como predeterminado.
- vbTextCompare: esto haría una comparación textual. Por ejemplo, si busca ‘x’ o ‘X’ en Excel, devolvería 2 en ambos casos. Este argumento ignora el caso de la letra. También puede usar 1 en lugar de vbTextCompare.
- vbDatabaseCompare: esto se usa solo para Microsoft Access. usa la información en la base de datos para realizar la comparación. También puede usar 2 en lugar de vbDatabaseCompare.
Notas adicionales sobre la función InStr de Excel VBA:
- InStr es un VBA función y no una función de hoja de trabajo. Esto significa que no puede usarlo dentro de la hoja de trabajo.
- Si String2 (que es la subcadena cuya posición está buscando) está vacía, la función devolvería el valor del argumento.
- Si la función InStr no puede encontrar la subcadena dentro de la cadena principal, devolverá 0.
Ahora echemos un vistazo a un ejemplo del uso de la función InStr de Excel VBA
Ejemplo 1 – Encontrar la posición desde el principio
En este ejemplo, usaré la función InStr para encontrar la posición de ‘V’ en ‘Excel VBA’ desde el principio.
El código para esto sería:
Sub FindFromBeginning()Dim Position As IntegerPosition = InStr(1, "Excel VBA", "V", vbBinaryCompare)MsgBox PositionEnd Sub
Cuando ejecute este código, mostrará un cuadro de mensaje con el valor 7, que es la posición de ‘V’ en la cadena ‘Excel VBA’.
Ejemplo 2 – Encontrar la posición desde el principio de la segunda palabra
Supongamos que quiero encontrar la posición de ‘the’ en la oración – ‘El rápido zorro marrón salta sobre el perro perezoso’
Sin embargo, quiero que la búsqueda comenzar con la segunda palabra en adelante.
En este caso, debemos cambiar el argumento para asegurarnos de que especifica la posición desde donde comienza la segunda palabra.
Aquí está el código que hará esto:
Sub FindFromSecondWord()Dim Position As IntegerPosition = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub
Este código mostrará el cuadro de mensaje con el valor 32 ya que hemos especificado la posición inicial como 4. Por lo tanto, ignora el primer ‘ El ‘y encuentra el segundo’ el ‘en la oración.
Si desea que sea más dinámico, puede mejorar el código para que ignore automáticamente la primera palabra.
Aquí está el código mejorado que hará esto:
Sub FindFromSecondWord()Dim StartingPosition As IntegerDim Position As IntegerStartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)MsgBox PositionEnd Sub
Este código primero encuentra la posición de un carácter de espacio y la almacena en la variable StartingPosition.
Luego usa esta variable como la posición inicial para buscar la palabra ‘the’.
Por lo tanto, devuelve 32 (que es la posición inicial de ‘the’ después de la primera palabra).
Ejemplo 3: encontrar la posición de @ en una dirección de correo electrónico
Puede crear fácilmente una función personalizada para encontrar la posición de @ en una dirección de correo electrónico utilizando la función Excel VBA InStr.
Aquí está el código para crear la función personalizada:
Ahora puede usar esta función personalizada como cualquier otra función de la hoja de trabajo. Tomará una referencia de celda como entrada y le dará la posición de @ en ella.
De manera similar, puede crear un función personalizada para encontrar la posición de cualquier subcadena dentro de la cadena principal.
Ejemplo 4: Resaltar una parte de la cadena dentro de las celdas
Esta es la consulta que se solicitó en June (mi lector quien también me inspiró a escribir este tutorial).
Aquí hay una muestra de datos en el formato que me envió June:
Su consulta era poner en negrita los números fuera del corchete.
Aquí está el código que creé que hace esto:
El código anterior usa el ciclo For Each para pasar por cada una de las celdas de la selección. Identifica la posición del carácter de corchete de apertura utilizando la función InStr. Luego cambia la fuente del texto antes del corchete.
Para usar este código, necesita copiar y pegar en un módulo en el editor de VB.
Una vez que haya copiado pegado el código, seleccione las celdas en las que desea aplicar este formato y ejecute la macro (como se muestra a continuación).
También le pueden gustar los siguientes tutoriales de Excel VBA:
- Función Excel VBA SPLIT.
- Función VBA TRIM.
- La guía definitiva para bucles VBA de Excel .
- Una guía para principiantes sobre el uso de For Next Loop en Excel VBA.
- Cómo crear y usar un complemento de Excel.
- Cómo combinar varios libros de trabajo en un libro de trabajo de Excel.
- Cómo contar celdas de colores en Excel.
- Ejemplos de macros de Excel VBA útiles para principiantes.
- Cómo ordenar datos en Excel usando VBA (Una guía paso a paso)