Corrija-me se estiver errado, mas o modo como entendo sua pergunta é que o texto do assunto e as strings de pesquisa já existem em uma ordem específica e você simplesmente gostaria de comparar as duas strings. ou seja,
| John Smith 34, Manager | John Smith |
| Jane Doe 25, Assistant | Jane Doe |
| Lucio 32, Web Developer | Lucio |
Eu uso a abordagem substitute()
para evitar o uso excessivo de iferror()
. Você pode comparar o comprimento do texto do assunto ("palheiro") com o comprimento do palheiro, substituindo a seqüência de pesquisa ("agulha").
= 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
No exemplo acima, você simplesmente usaria =LEN(A1)-LEN(SUBSTITUTE(A1,B1,""))>0
. Observe também que você pode realizar comparações sem distinção entre maiúsculas e minúsculas por meio de SUBSTITUTE(UPPER(haystack), UPPER(needle), "")
Eu prefiro essa abordagem em relação a iferror(find(needle, haystack)>0,false)
, porque o tratamento de erros é inerente - mais de uma filosofia de que o tratamento de erros deve ser feito no nível macro em vez de em fórmulas.
Além disso, se você preferir a saída binária ( 0, 1
) vs a saída booleana ( TRUE, FALSE
), você pode agrupar sua função em INT()
(ou seja, INT(TRUE)
= 1, INT(FALSE)
= 0).