Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Función InStr

| 8 comentarios

Descripción de INSTR

Esta función es particularmente útil en combinación con otras funciones que permiten la manipulación de textos.

La función InStr retorna la posición de la primera ocurrencia de una cadena de caracteres en otra cadena de caracteres.

La sintaxis de la función InStr es la siguiente:

             InStr( [posición inicial], texto base, texto a buscar, [tipo comparación] )

posición inicial (opcional): Es la posición en la cual empieza la búsqueda. Si el parámetro es omitido, la búsqueda empezará en la primera posición.
texto base: es la cadena donde se buscará la ocurrencia.
texto a buscar: es la cadena de texto que se buscará.
tipo comparación (opcional): Indicará el modo de búsqueda.

Ejemplo de INSTR

Ejemplo1:

Sub Prueba_Instr()

Texto = "XXpXXpXXPXXP"
buscar = "P"

'Comparación binaria, busca P, si encuentra p lo considerará distinto
Posicion = InStr(4, Texto, buscar, vbBinaryCompare)
MsgBox Posicion

'Comparación de texto, P ó p será lo mismo en esta búsqueda
Posicion = InStr(4, Texto, buscar, vbTextCompare)
MsgBox Posicion

'Si no se coloca el tercer parámetro asume binaria (exacta)
Posicion = InStr(Texto, buscar)
MsgBox Posicion

' Si el texto no existe retorna cero
Posicion = InStr(1, Texto, "W")
MsgBox Posicion

End Sub

Ejemplo2:
Sub FUNCION_INSTR()
posicion = InStr("Hola", "l")
Range("B3") = posicion
End Sub

En posición se guardará el valor de 3 que es la posición que ocupa "l" en la cadena "Hola".

Esta posición una vez obtenida puede ser empleadas por otras fórmulas para determinar cual es el texto que se requiere obtener.

Elaborado por: Luis Pinto

8 comentarios

  1. Haciendo un ejemplo utilizando esta función, en la celda (A2) pongo el texto, en la celda (B2) el valor a buscar y resultado lo muestro en la celda (C2):

    Sub funcionInSrt()
    Dim texto As String
    Dim valorBuscar As String
    Dim posicion As Integer
    texto = Range("A2").Value
    valorBuscar = Range("B2").Value
    posicion = InStr(texto, valorBuscar)
    Range("C2") = posicion
    End Sub

    • Me acabo de dar cuenta si el texto(A2) lo pongo en Mayúsculas, y el valor de la celda (B2) lo escribo en Minúsculas, utilizando la función InStr me arroja 0 del valor de la posición ya que no encuentra el valor buscado dentro de nuestro Texto.

      Una solución ha este ejemplo seria convertir a minúsculas utilizando LCase ambas celdas tanto A2 y B2; o en otro caso utilizar UCase para convertir a Mayúscula las celdas, el código quedaría así:

      Sub funcionInSrt()
      Dim texto As String
      Dim valorBuscar As String
      Dim posicion As Integer
      texto = Range("A2").Value
      texto = LCase(texto)
      valorBuscar = Range("B2").Value
      valorBuscar = LCase(valorBuscar)
      posicion = InStr(texto, valorBuscar)
      Range("C2") = posicion
      End Sub

      • tambien podrias usar el tipo de comparacion de texto como se describe aca. Si no determinas el tipo de busqueda, la toma como binaria

  2. Muchas gracias por tu gran aporte!!!, no tienes ni la mas remota idea de como me salvaste!!!

    Un gran saludo!

  3. Rellena de color una celda según criterio.

    Por ejemplo tengo todas una fila con los dias de la semana y en otra fila lo mismos. la idea es que debajo de cada de semana (primera fila), según el día se rellenar la siguiente fila con un color ejemplo amarillo pero un día anterior.

  4. Tengo un problema, em mi trabajo me dieron dos bases de datos. En una de ellas tengo solo nombre y apellido y el valor de la compra, y en la otra tengo los dos nombres y dos apellidos.

    Necesito lo siguiente

    Valor buscado: Cristian Zambrano

    Valor encontrado: Cristian Israel Zambrano Andrade

  5. Aunque el uso de la función InStr es bastante fácil, no consigo averiguar porque la siguiente macro devuelve el valor de posición 0(pos=0). ¿Qué se me esta escapando?

    Sub pruebacadena()

    Dim pos As Integer

    pos = InStr(1, "A", "Pago en AUTOPISTA MARE NOSTRUM VALENCIA ES", vbTextCompare)

    MsgBox (pos)

    End Sub

  6. Hola amigo es por el tipo de comparacion que le estas pasando como argumento, quitale el ultimo argumento a la funcion y vuelve a probar

Deja una respuesta

Los campos requeridos estan marcados con *.