Это почти работает:
{=INDEX(B$2:B$3, MATCH(1, (SEARCH(D2, A$2:A$3)>0)*1, 0), 1)}
Таким образом, ищите D2 в каждой ячейке диапазона A, возвращая 1 для каждой ячейки, в которой он найден, точно совпадая с 1, чтобы вернуть успешные строки, затем индексируйте в диапазон B, используя возвращенную строку, и получите возраст из первый столбец в этом диапазоне. Это предполагает, что совпадение вернет только одну строку. Используйте Ctrl-Shift-Enter, чтобы получить {} указывающий режим массива.
Так как искомое имя может быть префиксом другого имени, мы должны искать слово break (пробел или конец строки) len (name) символов после места, где оно было найдено:
{=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)}
Мы также должны искать разрыв слова в начале :
{=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)}