Найти, сопоставить только целое слово, обходной путь

Найти, сопоставить только целое слово, обходной путь

Я только что заметил, что в Excel Find нет опции "соответствовать только целому слову" (я не говорю о "соответствии всему содержимому ячейки"), например, поиск по "часть" не должен соответствовать "партнер". В MS Word такая опция есть (проверьте скриншот из MS Word).

Есть ли решение этой проблемы в Excel?

Слово - пример «Найти только целые слова»

решение1

Как указал Скотт, мой первоначальный ответ был неверным.

Из-за множества способов определения границы слова это будет трудно сделать с помощью формулы. Думаю, именно поэтому \b(граница слова) существует в регулярных выражениях. Если бы только мы могли использовать их в диалоговом окне поиска/замены Excel.

Установите эту надстройку Excel,http://www.codedawn.com/excel-add-ins.phpнажмите на новыйНайти и заменить RegExкнопку (или опцию меню в 2003 году) и используйте этот поисковый запрос \bword\b, снимите/отметьте флажок «Учитывать регистр» и нажмите «Найти».

Важно, чтобы буквы b были строчными, и вам придется немного узнать о регулярных выражениях (рекомендуетсяэтот сайт), если вы хотите найти что-то, связанное с пунктуацией, но вы можете поместить между \bтегами любую стандартную букву/цифру, если это все, что вы хотите найти.

Думаю, я охватил большинство случаев с помощью этого теста: тестовое изображение

решение2

С помощью этой формулы вы можете выполнить поиск по слову «Word» (без учета регистра), чтобы получить значение TRUE только для точного слова, при условии отсутствия знаков препинания.

=ISNUMBER(SEARCH(" Word "," "&A1&" "))

Это вернет TRUE для текста типа

Умный с полуслова понимает илиСмазка - это слово

и правильно ЛОЖЬ дляДамоклов меч.....но вы также получите ЛОЖЬ для чего-то вроде

Мое слово!потому что восклицательный знак отрицает совпадение

Чтобы справиться с пунктуацией, вы можете использовать несколько функций SUBSTITUTE, например, чтобы игнорировать запятую, точку с запятой и восклицательный знак, вы можете использовать эту версию

=ISNUMBER(SEARCH(" Word "," "&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,",",""),";",""),"!","")&" "))

решение3

При вводе параметров в разделе "Найти" просто вставьте пробел перед словом или после него. В моем случае "Van" не давал "SAVANA" изменяться, а "Man" не позволял "Mankind" изменяться.

решение4

Я нашел решение этой проблемы.

Вам необходимо создать функцию, которую вы будете вызывать после того, как выполните стандартный поиск и найдете 1 результат.

Функция будет проверять, является ли слово целым или нотой. Вот код функции:

Он проверяет символ до и после найденного выражения, и если это НЕ буква (с ударением или без), возвращает значение true, в противном случае — false.

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

Связанный контент