- La macro cambia de color el fondo de la celda que contiene la palabra
- La macro es sensible a las mayúsculas y minúsculas
- Puede encontrar palabras completas o parte de una palabra
- Utiliza el operador LIKE para localizar la palabra
Sub BuscarPalabras()
Dim Celda As Range
Dim palabra As String
palabra = InputBox("Palabra a buscar")
palabra = "*" & palabra & "*"
For Each Celda In Selection
If Celda.Value Like palabra Then
Celda.Interior.ColorIndex = 36
End If
Next Celda
End Sub
En el siguiente ejemplo, se busca la palabra "José"
Resultado de la búsqueda.
En el siguiente ejemplo, se busca la palabra "ez"
Macro para buscar y resaltar palabras dentro de un texto
- La macro cambia de color (rojo) la palabra encontrada dentro del texto
- La macro es sensible a las mayúsculas y minúsculas
- Puede encontrar palabras completas o parte de una palabra
- Utiliza la función InStr para localizar la palabra
Sub ResaltarPalabras()
Dim Celda As Range
Dim palabra As String
palabra = InputBox("Palabra a buscar")
For Each Celda In Selection
posicion = InStr(Celda.Value, palabra)
If posicion > 0 Then
Celda.Characters(posicion, Len(palabra)).Font.Color = vbRed
End If
Next Celda
End Sub
En el siguiente ejemplo, se buscó la palabra "José"
La siguiente macro resalta las diferentes ocurrencias de la palabra en el la misma celda.
Sub ResaltarPalabras2()
Dim Celda As Range
Dim palabra As String
Dim posicion As Integer
palabra = InputBox("Palabra a buscar")
For Each Celda In Selection
posicion = InStr(1, Celda.Value, palabra)
Do Until posicion = 0
Celda.Characters(posicion, Len(palabra)).Font.Color = vbRed
posicion = posicion + 1
posicion = InStr(posicion, Celda.Value, palabra)
Loop
Next Celda
End Sub
En el ejemplo que sigue se buscó la palabra "amo"
Macro para buscar en un texto una lista de palabras
La macro trabaja de la siguiente manera:
Solicita el rango donde se encuentra la lista de palabras a buscar (una palabra por cada renglón)
Solicita el rango de las celdas donde se encuentra el texto donde se buscan las palabras
Si encuentra la palabra en el renglón del texto, coloca la palabra encontrada en la columna a la
derecha del renglón. Limpia la celda de la derecha del texto en el caso de no encontrar la palabra
Sub buscarPalabras()
Dim palabra As Variant
Dim celda As Variant
Dim direccionCelda As String
Dim rangoPalabras As Range
Dim rangoTexto As Range
Dim contenidoCelda As String
Dim contenidopalabra As String
'Proporcionar el rango de la palabra a buscar
Set rangoPalabras = Application.InputBox(Prompt:="Seleccionar el rango de entrada de las palabras a buscar", _
Title:="Rango palabras", Type:=8)
'Proporcionar el rango del texto
Set rangoTexto = Application.InputBox(Prompt:="Seleccionar el rango de entrada del texto donde se busca", _
Title:="Rango texto", Type:=8)
'Buscar en cada celda del texto la palabra
For Each celda In rangoTexto
'Buscar cáda palabra en la celda activa
For Each palabra In rangoPalabras
contenidoCelda = LCase(celda.Value) 'convertir a minúscula las celdas del texto
contenidopalabra = LCase(palabra.Value) 'convertir a minúscula la palabra a buscar
direccionCelda = celda.Address
If contenidoCelda Like "*" & contenidopalabra & "*" Then
Range(direccionCelda).Offset(0, 1) = contenidopalabra
Exit For 'salir del ciclo cuando encuentre la palabra
Else
Range(direccionCelda).Offset(0, 1) = ""
End If
Next palabra
Next celda
End Sub
En el siguiente ejemplo, la lista de palabras a buscar se encuentra en la columna D. El rango del texto donde se busca la palabra se encuentra en la columna A. Si se encuentra la palabra se escribe a la derecha de la celda donde se encontró, columna B.