Я вижу два аспекта сложности в вашем вопросе:
- Где ключевое слово встречается в тексте (начало, середина, конец)
- Какие символы разделяют слова.
Первый - фиксированный размер, вам нужно обработать три случая. Второй зависит от количества символов, которые вы хотите принять в качестве разделителей. Ниже я предположил, что вы принимаете пробел и подчеркивание, однако вы можете расширить этот набор, вставив больше SUBSTITUTE
вызовов функций.
В моей таблице $ A2 - это ячейка, в которой вы ищете ключевое слово, а B $ 1 содержит ключевое слово.
Чтобы стандартизировать символ-разделитель, вам нужна формула:
B2=SUBSTITUTE($A2,"_"," ")
Чтобы проверить, начинается ли строка с ключевого слова:
C2=--(LEFT($B2,LEN(B$1)+1)=B$1&" ")
Чтобы проверить, заканчивается ли строка ключевым словом:
D2=--(RIGHT($B2,LEN(B$1)+1)=" "&B$1)
Чтобы проверить, находится ли ключевое слово в середине строки:
E2=--(LEN(SUBSTITUTE(UPPER($B2)," "&UPPER(B$1)&" ",""))<LEN($B2))
Для оценки трех приведенных выше случаев:
F2=--(0<$C2+$D2+$E2)
Если вы хотите использовать одну ячейку, объедините формулы в:
G2=--(0<--(LEFT(SUBSTITUTE($A2,"_"," "),LEN(B$1)+1)=B$1&" ")+--(RIGHT(SUBSTITUTE($A2,"_"," "),LEN(B$1)+1)=" "&B$1)+--(LEN(SUBSTITUTE(UPPER(SUBSTITUTE($A2,"_"," "))," "&UPPER(B$1)&" ",""))<LEN(SUBSTITUTE($A2,"_"," "))))
В конце концов, он не очень читабелен, но я не думаю, что было более простое решение с использованием только формул.
Примечание. Если вы хотите изменить набор символов, принимаемых в качестве разделителей, добавьте еще вызовы функций SUBSTITUTE
в B2, затем скопируйте формулу F2 в блокнот и замените $ C2 формулой C2 и т. Д., Затем замените $ B2 на обновленную формулу B2.
Обновление
Опираясь на идею в комментарии Рона Розенфельда к ответу tigeravatar, формулу можно упростить (можно объединить начало, середину, конец):
=--(LEN(SUBSTITUTE(" "&UPPER($B2)&" "," "&UPPER(B$1)&" ",""))<LEN($B2))
После подстановки $ B2 в формулу:
=--(LEN(SUBSTITUTE(" "&UPPER(SUBSTITUTE($A2,"_"," "))&" "," "&UPPER(B$1)&" ",""))<LEN(SUBSTITUTE($A2,"_"," ")))