Isso quase funciona:
{=INDEX(B$2:B$3, MATCH(1, (SEARCH(D2, A$2:A$3)>0)*1, 0), 1)}
Ou seja, procure por D2 em cada célula do intervalo A, retornando 1 para cada célula onde ela for encontrada, combine exatamente com 1 para retornar as linhas bem-sucedidas, depois indexe no intervalo B usando a linha retornada e obtenha o idade da primeira coluna nesse intervalo. Isso pressupõe que a correspondência retornará apenas uma linha. Use Ctrl-Shift-Enter para obter o {} modo de matriz de indicação.
Como o nome que procuramos pode ser um prefixo de outro nome, devemos procurar por um caractere len (name) de quebra de palavra (espaço ou fim da string) após o local em que foi encontrado:
{=INDEX(B$2:B$3,
MATCH(0,
LEN(SUBSTITUTE(MID(A$2:A$3,LEN(D2)+SEARCH(D2,A$2:A$3),1),
" ",
"")),
0),
1)}
Devemos procurar uma quebra de palavra no início também:
{=INDEX(B$2:B$3,MATCH(0,
LEN(SUBSTITUTE(IFERROR(MID(A$2:A$3,SEARCH(D2,A$2:A$3)-1,1)," ")," ",""))+
LEN(SUBSTITUTE(MID(A$2:A$3,LEN(D2)+SEARCH(D2,A$2:A$3),1), " ","")),
0),1)}