Поправьте меня, если я ошибаюсь, но, как я понимаю, ваш вопрос заключается в том, что текст темы и строки поиска уже существуют в определенном порядке, и вы просто хотели бы сравнить две строки. т.е.
| John Smith 34, Manager | John Smith |
| Jane Doe 25, Assistant | Jane Doe |
| Lucio 32, Web Developer | Lucio |
Я использую подход substitute()
, чтобы избежать чрезмерного использования iferror()
. Вы можете сравнить длину предметного текста ("стог сена") с длиной стога сена, подставив строку поиска ("иголка").
= LEN(haystack) - LEN( SUBSTITUTE(haystack, needle, "") ) > 0
// Analysis of a matching example
- LEN("John Smith 34, Manager") = 22
- SUBSTITUTE("John Smith 34, Manager", "John Smith", "") = " 34, Manager"
- LEN(" 34, Manager") = 10
- (22 - 10) > 0 = TRUE
// Analysis of a non-matching example
- LEN("John Smith 34, Manager") = 22
- SUBSTITUTE("John Smith 34, Manager", "Lucio", "") = "John Smith 34, Manager"
- LEN("John Smith 34, Manager") = 22
- (22 - 22) > 0 = FALSE
В приведенном выше примере вы просто используете =LEN(A1)-LEN(SUBSTITUTE(A1,B1,""))>0
. Также обратите внимание, что вы можете выполнять сравнения без учета регистра с помощью SUBSTITUTE(UPPER(haystack), UPPER(needle), "")
Я предпочитаю этот подход, а не iferror(find(needle, haystack)>0,false)
, потому что обработка ошибок является неотъемлемой частью - больше философии, что обработка ошибок должна выполняться на макроуровне, а не на формуле.
Кроме того, если вы предпочитаете двоичный вывод (0, 1
), а не логический выход (TRUE, FALSE
), вы можете заключить вашу функцию в INT()
(то есть INT(TRUE)
= 1, INT(FALSE)
= 0).