Tabla de contenido
Al trabajar con códigos VBA de Excel, nos encontramos con algunas funciones incorporadas que convierten una tarea compleja en un pequeño código de una línea. InStr es una función de este tipo disponible en Excel VBA que busca una cadena determinada dentro de otra cadena determinada a partir de una posición determinada. Hoy voy a mostrar cómo se puede utilizar la función InStr en VBA para buscar una cadena específica dentro de otra cadena dada.
Descargar el cuaderno de prácticas
Función InStr.xlsm
Introducción a la Función InStr de VBA
- Resumen
Busca una cadena específica dentro de una cadena dada, comenzando desde una posición dada. Si encuentra una coincidencia, devuelve la posición en la cadena dada desde donde comenzó la coincidencia.
- Sintaxis
InStr([inicio],cadena1,cadena2,[comparar])
- Argumentos
ARGUMENTO | REQUISITO | DESCRIPCIÓN |
---|---|---|
[start] | Opcional | La posición desde la que se iniciará la búsqueda. Por defecto es 1. |
cadena1 | Requerido | La cadena dentro de la cual busca una cadena dada. |
cadena2 | Requerido | La cadena que busca dentro de una cadena dada. |
[comparar] | Opcional | Un valor numérico entre {-1,0,1,2} que especifica el tipo de comparación. El valor por defecto es -1 (vbUseCompareOption). Si no se especifica la sentencia Option Compare, realiza una Comparación Binaria. |
Nota:
- Aunque el [start] y el argumento [comparar] son opcionales, se necesita el argumento [start] si especifica el argumento [comparar] En caso contrario, se producirá un error.
- Si uno o ambos [start] y el argumento [comparar] argumento es Nulo se producirá un error.
- Los cuatro valores especificados en el [comparar] realizan cuatro tipos diferentes de comparación, que se mencionan a continuación:
VALOR | CONSTANTE | DESCRIPCIÓN |
---|---|---|
-1 | vbUseCompareOption | Realiza la comparación especificada en la sentencia Option Compare. |
0 | vbBinaryCompare | Realiza una comparación binaria. |
1 | vbTextCompare | Realiza una comparación de texto. |
2 | vbDatabaseCompare | Realiza una comparación a partir de su base de datos. |
- Comparar opciones es una sentencia que se proporciona antes de que comience el código VBA principal. Especifica si el código buscará una Comparación Binaria o una Comparación de Texto cuando sea necesario.
Opción Comparar texto
- En términos sencillos Comparación binaria significa comparación sensible a mayúsculas y minúsculas.
- En términos sencillos Comparación de textos significa comparación sin distinción entre mayúsculas y minúsculas.
- Valor de retorno
- Devuelve la posición en el cadena1 de la que el cadena2 empezó.
- En caso de que cadena2 no se encuentra en cadena1 a partir del iniciar posición, devuelve 0.
- Si el cadena1 es de longitud cero, devuelve 0.
- Si el cadena2 es de longitud cero, devuelve el argumento iniciar .
- Y por último, si alguno de los cadena1 o cadena2 es Nulo devuelve un error.
3 Ejemplos fáciles de usar la función InStr de VBA
En esta sección, veremos tres sencillos ejemplos de aplicación del VBA InStr en Excel. Veamos el primer ejemplo de la función InStr en los códigos VBA.
1. Decidir si una dirección es de correo electrónico o no utilizando la función InStr de VBA
Aquí hemos tomado un conjunto de datos que contiene algunas direcciones de contacto de clientes. Nuestro objetivo aquí será identificar si las direcciones son direcciones de correo electrónico o no.
Ahora desarrollaremos un código VBA utilizando la función InStr para identificar si se trata de una dirección de correo electrónico o no. Para ello, siga los pasos que se indican a continuación.
Pasos:
- Al principio, vaya a la Desarrollador y seleccione Visual Basic ( O pulse Alt+F11) para abrir el VBA ventana.
- Luego, en el VBA vaya a Insertar> Módulo .
- Después de eso, en el módulo, pegue el siguiente código:
Function DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Not Email" Else DECISION = "Email" End If End Function
- Además, hemos creado una función llamada DECISIÓN Decide si una dirección es de correo electrónico o no. Apliquemos la función al conjunto de datos que tenemos.
- En célula C5 escriba la siguiente fórmula y autocomplete el resto de las celdas con Asa de llenado .
=DECISIÓN(B5)
- Como podemos ver, hemos identificado cada dirección tanto si se trata de una dirección de correo electrónico como si no.
🎓 ¿Cómo funciona el código?
- Función DECISIÓN(cadena1 como cadena)
En primer lugar, esto crea una función llamada DECISIÓN con un argumento de cadena llamado cadena1 .
- Dim Position As Integer
Declara una variable entera denominada Posición .
- Posición = InStr(1, cadena1, "@", 0)
Esto asigna el valor del Posición como salida de la variable InStr con los argumentos 1, cadena1, "@" y 0 En resumen, esto asigna la posición en la dirección donde hay un "@" .
- Si Posición = 0 Entonces DECISIÓN = "No Email"
Asigna la salida del DECISIÓN como "No Email" si el Posición variable es 0 es decir, no había "@" en la dirección.
(Recordemos que si no se encuentra ninguna cadena dentro de la cadena dada, la función InStr la función devuelve 0 ).
- Else DECISIÓN = "Correo electrónico"
Esto asigna la salida del DECISIÓN como "Email" si hubiera un "@" en la dirección. Así, las direcciones en las que existe el "@" se clasifican como Correo electrónico y el resto se clasifican como "No Email" .
Lecturas similares
- Cómo utilizar la función VBA UCASE en Excel (4 Ejemplos)
- Uso MsgBox Función en Excel VBA (Una guía completa)
- Cómo utilizar la función VBA SPLIT en Excel (5 Ejemplos)
- Uso LCase Función en VBA en Excel (Con 4 Ejemplos)
- Cómo utilizar la función Fix en Excel VBA (4 Ejemplos)
2. Utilización de la función InStr de VBA para Cómo extraer la extensión de algunas direcciones de correo electrónico
Aquí, tenemos una lista de algunas direcciones de correo electrónico de algunos clientes. Esta vez vamos a extraer la extensión de la dirección de correo electrónico como si tienen gmail.com o yahoo.com .
Para ello, siga los pasos que se indican a continuación.
Pasos:
- Para empezar, como en el método anterior, abra un nuevo VBA y pegue el siguiente código en la ventana.
Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function
- Además, hemos creado una función llamada EXTENSIÓN Extrae la extensión de cualquier dirección de correo electrónico.
- Además, apliquemos esta función al conjunto de datos que tenemos. En primer lugar, introduzca esta fórmula en la celda C5 y, a continuación, haga doble clic en Asa de llenado .
=EXTENSIÓN(B5)
- Por último, podemos ver que hemos extraído con éxito la Extensión de todos los Emails.
🎓 ¿Cómo funciona el código?
- Function EXTENSION(Email As String)
Esto crea una nueva función llamada EXTENSIÓN con un argumento de cadena llamado Correo electrónico .
- Dim Position As Integer
Esta parte declara una variable entera llamada Cargo.
- Posición = InStr(1, Email, "@", 0)
Esto asigna el valor del Posición como salida de la variable InStr con los argumentos 1, Email, "@" y 0 En resumen, esto asigna la posición en el Correo electrónico donde hay un "@" .
- EXTENSION = Derecha(Email, (Len(Email) - Posición))
Esta parte asigna la salida del EXTENSIÓN como los caracteres que siguen al símbolo "@" Se trata de la ampliación necesaria del Correo electrónico .
3. Extraer el nombre o los apellidos de un nombre utilizando la función InStr de VBA
Por último, realizaremos una tarea singularmente diferente. Esta vez tenemos los nombres de algunos empleados de una empresa. Y trataremos de construir una función para extraer el nombre o el apellido de los empleados.
Para ello, siga los pasos que se indican a continuación.
Pasos:
- En primer lugar, de forma similar a método 1 Pegue el código siguiente en un nuevo módulo de la ventana VBA.
Function SHORTNAME(Name As String, First_or_Last As Integer) Dim Break As Integer Break = InStr(1, Name, " ", 0) If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1) Else SHORTNAME = Right(Name, Len(Name) - Break) End If End Function
- Aquí, hemos creado una función llamada NOMBRE CORTO que extrae el nombre o el apellido de un nombre. Apliquemos esta fórmula a nuestro conjunto de datos.
- En primer lugar, para extraer el nombre de pila, escriba la fórmula siguiente en la celda C5 .
=NOMBRECORTO(B5,-1)
- Por último, para extraer los apellidos, escribimos la siguiente fórmula en D5 :
=NOMBRECORTO(B5,1)
- Después, si autorellenamos el resto de las celdas con Manipulador de llenado obtendremos el resultado deseado.
🎓 ¿Cómo funciona el código?
- Function SHORTNAME(Name As String, First_or_Last As Integer)
Crea una nueva función llamada NOMBRE CORTO con un argumento String llamado Nombre y un argumento entero denominado Primero_o_último .
- Dim Break As Integer
Esta parte declara una nueva variable entera llamada Pausa .
- Break = InStr(1, Nombre, " ", 0)
Asigna el valor del Pausa como salida de la variable InStr con los argumentos 1, Nombre, " " y 0 En resumen, esto asigna la posición en el Nombre donde hay un espacio (" ").
- If Primero_o_último = -1 Then NOMBRE_BREVE = Left(Nombre, Break - 1)
Esta línea asigna la salida del NOMBRE CORTO como los caracteres anteriores al espacio si el Primero_o_último es -1. Este es el primer nombre.
- SHORTNAME = Derecha(Nombre, Len(Nombre) - Break)
Esta parte asigna la salida del NOMBRE CORTO como los caracteres que siguen a la espacio si el Primero_o_último es 1. Este es el apellido.
Conclusión
De este modo, puede escribir códigos VBA con la función InStr que encuentra la posición de una cadena específica dentro de otra cadena dada, y luego puedes crear tus propias funciones para una variedad de usos. Además, si tienes alguna pregunta, no dudes en preguntarnos.