Isso porque, o SEARCH retorna um número ou um erro. Se a palavra não for encontrada, retornará um erro.
Portanto, se a célula não contiver stadium
, o erro #VALUE
será retornado para a primeira SEARCH e você não poderá tentar equacioná-la com um número e todos os curtos-circuitos da fórmula e #VALUE
serão retornados.
Use ISNUMBER
para superar. ISNUMBER
retornará FALSE
se o retorno for um erro:
=IF(ISNUMBER(SEARCH("stadium",$P6)),"Sport",IF(ISNUMBER(SEARCH("sanatorium",$P6)),"Hospital"))
Agora, como você imaginou, seria melhor e mais fácil criar uma tabela com os critérios de pesquisa e a saída esperada. Em seguida, use uma fórmula de tipo de pesquisa para retornar a saída correta:
=INDEX(F:F,AGGREGATE(15,6,ROW($E$1:INDEX(E:E,MATCH("zzz",E:E)))/(ISNUMBER(SEARCH($E$1:INDEX(E:E,MATCH("zzz",E:E)),A1))),1))
Isso iterará pela tabela e retornará a primeira saída da primeira correspondência.