Me acabo de dar cuenta de que no hay ninguna opción en Excel Buscar para "hacer coincidir sólo la palabra completa" (no estoy hablando de "hacer coincidir todo el contenido de la celda"), por ejemplo, la búsqueda de "parte" no debe coincidir con "pareja". MS Word tiene esta opción (consulte la captura de pantalla de MS Word).
¿Existe alguna solución para esto en Excel?
Respuesta1
Como señaló Scott, mi respuesta original era incorrecta.
Debido a la multitud de formas en que puedes definir el límite de una palabra, esto será difícil de hacer con un foro. Supongo que es por eso que \b
(límite de palabra) existe en las expresiones regulares. Si tan solo pudiéramos usarlos en el cuadro de diálogo buscar/reemplazar de Excel.
Instale este complemento de Excel,http://www.codedawn.com/excel-add-ins.phphaga clic en el nuevoBuscar y reemplazar RegEx(u opción de menú en 2003) y utilice este término de búsqueda \bword\b
, desmarque/marque coincidencia de mayúsculas y minúsculas y presione Buscar.
Es importante que las b estén en minúsculas y tendrás que aprender un poco sobre expresiones regulares (recomendadoeste sitio) si desea buscar algo que involucre puntuación, pero está bien colocar cualquier letra o número estándar entre las \b
etiquetas si eso es todo lo que desea buscar.
Creo que cubrí la mayoría de los casos con esta prueba:
Respuesta2
En cuanto a la fórmula, puede buscar "Palabra" (sin distinguir entre mayúsculas y minúsculas) con esta fórmula para obtener VERDADERO solo para la palabra exacta, asumiendo que no hay puntuación.
=ISNUMBER(SEARCH(" Word "," "&A1&" "))
Eso devolvería VERDADERO para texto como
Una palabra para el sabio oGrasa es la palabra
y correctamente FALSO paraEspada de Damocles.....pero también obtendrías FALSO por algo como
¡Mi palabra!porque el signo de exclamación niega la coincidencia
Para lidiar con la puntuación, puede usar múltiples funciones SUSTITUIR, por ejemplo, para ignorar la coma, el punto y coma y el signo de exclamación, puede usar esta versión.
=ISNUMBER(SEARCH(" Word "," "&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,",",""),";",""),"!","")&" "))
Respuesta3
Al ingresar los parámetros en la sección "Buscar", simplemente incluya un espacio antes o después de la palabra. En mi caso, "Van" impedía que "SAVANA" cambiara, y "Man" impediría que "Mankind" cambiara.
Respuesta4
He encontrado una solución para ese problema.
Debe crear una función a la que llamará después de haber realizado su búsqueda estándar y haber encontrado 1 resultado.
La función comprobará si la palabra está completa o es una nota. Aquí está el código de la función:
Comprueba el carácter antes y después de la expresión encontrada y si NO es una letra (acentuada o no), devuelve verdadero; en caso contrario, devuelve falso.
Function WholeWord(ByVal text As String, ByVal expression As String) As Boolean
Dim aux1 As Integer: aux1 = 0
Dim aux2 As Integer: aux2 = 0
Dim condition1 As Boolean: condition1 = False
Dim condition2 As Boolean: condition2 = False
aux1 = InStr(1, text, expression, vbTextCompare)
If aux1 = 1 Then
condition1 = True
Else
If UCase(Mid(text, aux1 - 1, 1)) Like "[!A-ZÂÊÎÔÛÁÉÍÓÚÇÃÕÀÈÌÒÙÄËÏÖÜ]" Then
condition1 = True
End If
End If
aux2 = aux1 + Len(expression)
If aux2 = Len(text) + 1 Then
condition2 = True
Else
If UCase(Mid(text, aux2, 1)) Like "[!A-ZÂÊÎÔÛÁÉÍÓÚÇÃÕÀÈÌÒÙÄËÏÖÜ]" Then
condition2 = True
End If
End If
If condition1 = True And condition2 = True Then
WholeWord = True
Else
WholeWord = False
End If
End Function