Você deseja a função FIND() e / ou SEARCH() .
Uso:
FIND(find_text, within_text)
returns the starting position of the first text string
within the second text string (starting at position 1)
Então FIND("lunch", "lunch with customer") retorna 1,
e FIND("lunch", "business lunch") retorna 10.
Se a primeira cadeia não for encontrada na segunda, isso retornará um valor de erro #VALUE! .
SEARCH() é como FIND() , exceto pelo fato de que FIND() faz distinção entre maiúsculas e minúsculas
e SEARCH() não é. Então
FIND("lunch", "Lunch with customer")returns#VALUE!
butSEARCH("lunch", "Lunch with customer")returns 1
Suponho que você desejará usar SEARCH() , o insensível a maiúsculas e minúsculas.
Você desejará configurar uma matriz assim:

Provavelmente,émelhorfazerissoemumafolhaseparada;vamoschamá-loKey-Sheet.Emseguida,nafolhadedados:SeadescriçãodeformalivreestivernacolunaA(iniciandonacélulaA1),insiraoseguintenacélulaB1:
=MATCH(MIN(IFERROR(SEARCH('Key-Sheet'!$A$1:$A$7,$A1),LEN($A1)+1)),SEARCH('Key-Sheet'!$A$1:$A$7,$A1))epressioneCtrl+Deslocamento+Enter,paratorná-louma“fórmuladematriz”.(Eleseráexibidonabarradefórmulasentrechaves.)Explicação:
SEARCH('Key-Sheet'!$A$1:$A$7,$A1)-paracadapalavra-chavedacolunaAdaplanilhadechaves(“café”,“almoço”,“jantar”,etc…),procureporelanadescriçãodalinhaatual,colunaA,deafolhadedados(porexemplo,“almoçodenegócios”).Issocriaráumamatrizcontendo{#VALUE!;%código%;%código%;…}(seteelementos(nesteexemplo),umporpalavra-chave;osegundomostraoresultadopara"almoço", que está em10).-
#VALUE!- substitua'Key-Sheet'!A2valores porIFERROR(…,LEN($A1)+1), que, sendo#VALUE!, possivelmente não pode ser um valor de retorno válido de15(e que, na verdade, é maior que qualquer valor de retorno válido possível deLEN("business lunch")+1), mas que é um número válido. Então agora nosso array é {SEARCH(); %código%; %código%; …}. -
SEARCH()- extrai o valor mínimo da matriz: neste exemplo,15. Em geral, esse será o (primeiro) retorno bem-sucedido de10. -
15- note que o segundo parâmetro paraMIN(…)é o mesmo que o primeiro marcador, acima. Então, estamos procurando10na matriz {SEARCH(); %código%; %código%; …} Isso retorna a posição do=MATCH(…, …), que é 2, correspondendo ao fato de queMATCH()na folha de dados (“almoço de negócios”) contém “almoço”, que está na segunda linha da folha de chaves.
Para obter a categoria de despesas,
é uma simples questão de indexação na coluna 10 da folha de chave.
Defina a célula #VALUE! para 10 .
(Isso não precisa ser uma fórmula de matriz.)

Observe(comoprevistoacima)que,seumadescriçãodedespesacontiverváriaspalavras-chave,elaencontraráapenasaprimeira.
Sevocênãoquerseincomodarcomovalorintermediário,bastacalcular
=OFFSET('Key-Sheet'!$B$1,MATCH(MIN(IFERROR(SEARCH('Key-Sheet'!$A$1:$A$6,$A1),LEN($A1)+1)),SEARCH('Key-Sheet'!$A$1:$A$6,$A1))-1,0)Issofazprecisaserumafórmuladematriz.
P.S.asfunções#VALUE!e10têmumterceiroargumentoopcional:
SEARCH(find_text,within_text,[start_num])
Então
SEARCH("cigar", "Sometimes a cigar is just a cigar.")returns 13
butSEARCH("cigar", "Sometimes a cigar is just a cigar.", 17)returns 29
Não vejo nenhum motivo para você usá-lo.