2

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

Есть ли обходной путь для этого в Excel?

Слово - пример "Найти только слова"

5 ответов5

3

По формуле вы можете выполнить поиск по "Слову" (без учета регистра) с помощью этой формулы, чтобы получить значение ИСТИНА только для точного слова, при условии отсутствия пунктуации

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

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

Слово к мудрому или жир - это слово

и правильно FALSE для Damocles Sword..... но вы также получите FALSE для чего-то вроде

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

Чтобы справиться с пунктуацией, вы можете использовать несколько функций ЗАМЕНИТЕЛЯ, например, чтобы игнорировать запятую, точку с запятой и восклицательный знак, вы можете использовать эту версию

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

2

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

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

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

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

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

0

Элегантное решение RegEx не работало в Excel 2010, но вы можете использовать MS Word для простого обходного пути:

  1. Выберите диапазон в Excel.

  2. Скопируйте это.

  3. Вставьте его в новый пустой документ MS Word.

  4. Используйте функцию поиска и замены Word, но выберите "Искать только слова целиком" в тексте, который вы ищете.

  5. Когда вы закончите замену, скопируйте всю таблицу из Word.

  6. Вернитесь в Excel. Диапазон все еще выбран. Просто вставьте свою скопированную таблицу.

0

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

Вы должны создать функцию, которую вы собираетесь вызывать после того, как вы выполнили стандартный поиск и нашли 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
0

При вводе параметров в разделе "Найти" просто добавьте пробел перед или после слова. В моем случае, "Ван" препятствовал изменению "Саваны", а "Человек" не давал бы изменить "Человечеству".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .