Ícono del sitio Formulas Excel

Macro excel para buscar texto dentro de otro

busca-texto-dentro-de-otro-vba-excel
Síguenos y dale Like:
20k
7400
1k

Las búsquedas en excel son algo muy cotidiano, pero no siempre es sencillo, imagina tener que buscar una cadena de texto especifica dentro de una enorme plantilla contable en excel y que ademas podría estar contenida dentro de mas texto, así que ahora te mostrare una macro para buscar texto dentro de otro texto, parece complicado, pero ya veras que no lo es tanto.

Aunque existen funciones de excel que te pueden decir si una cadena de texto esta contenida dentro de otra ( ENCONTRAR , HALLAR ), estas tienen la limitante que solo aplican a un texto en especifico, que pasa si deseas hacer la búsqueda en muchas cadenas de texto que están en diferentes celdas.?

Esto se puede resolver fácilmente con una macro, usaremos una función de VBA que hace lo mismo que ( ENCONTRAR Y HALLAR ) pero a su vez se ejecutara esta función mediante un ciclo que recorrerá cierta cantidad de filas.

Macro para encontrar texto en otro

Option Explicit

Sub BuscaTexto()
  Dim r As Range
  Dim tx As String
  Dim uFila As Long

  uFila = ActiveSheet.Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row

  tx = InputBox("Ingresar el texto a buscar")

  If tx <> "" Then
    For Each r In Range(ActiveCell.Address, Cells(uFila, ActiveCell.Column))
      If InStr(1, ActiveCell.Value, tx) > 0 Then
        ActiveCell.Interior.Color = 65535
      End If
      Selection.Offset(1).Select
    Next r
  End If
End Sub

Explicando el código

Como puedes ver, el código es muy corto, pero tiene un enorme potencial, así que lo explicare.

Obtener la ultima fila con datos

uFila = ActiveSheet.Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row

Con esta linea se obtiene la ultima fila que contiene algún dato, esto tomando como referencia la celda que se ha seleccionado.

Obtener el texto que se desea buscar.

tx = InputBox("Ingresar el texto a buscar")

Con esta linea metemos en la variable tx la cadena que teclearemos en una caja de texto.

Ciclo para recorrer las celdas y buscar el texto en cada posicion

For Each r In Range(ActiveCell.Address, Cells(uFila, ActiveCell.Column))
  If InStr(1, ActiveCell.Value, tx) > 0 Then
    ActiveCell.Interior.Color = 65535
  End If
  Selection.Offset(1).Select
Next r

Ese es un ciclo que recorre todas las celdas con datos y verifica en cada posición si la celda activa contiene el texto buscado, no importa si hay mas texto, es decir, el texto buscado podría estar envuelto en mas texto, pero si esta, la función nos dice a partir de que carácter se encuentra.

La condicion que determina si el texto esta contenido en la cadena

If InStr(1, ActiveCell.Value, tx) > 0 Then
  ActiveCell.Interior.Color = 65535
End If

Con esa sección de código se determina si el texto esta contenido en el texto de cada celda, si lo encuentra, pintara con un fondo amarillo la celda activa.

Para que puede servir esta macro.

Obviamente hay muchas cosas en las que se puede aplicar, te doy una idea ( se puede usar para conciliaciones )

Síguenos y dale Like:
20k
7400
1k
Salir de la versión móvil