Это почти работает:
{=INDEX(B:B, MATCH(1, (SEARCH(D2, A:A)>0)*1, 0), 1)}
то есть, поиск D2 в каждой ячейке диапазона A, возвращая 1 для каждой ячейки, где он найден, матч на 1 точно, чтобы вернуть успешные строки, а затем индекс в диапазоне B с помощью строки возвращается, и получить возраст из первого столбца в этом диапазоне. Это предполагает, что матч будет возвращать только одну строку. Используйте Ctrl-Shift-Enter, чтобы получить {}, указывающий режим массива.
Так как имя, которое мы ищем, может быть префиксом другого имени, мы должны искать разрыв слова(пробел или конец строки) len (имя) символов после того, где он был найден:
{=INDEX(B:B,
MATCH(0,
LEN(SUBSTITUTE(MID(A:A,LEN(D2)+SEARCH(D2,A:A),1),
" ",
"")),
0),
1)}
мы должны искать слово перерыв в начало тоже:
{=INDEX(B:B,MATCH(0,
LEN(SUBSTITUTE(IFERROR(MID(A:A,SEARCH(D2,A:A)-1,1)," ")," ",""))+
LEN(SUBSTITUTE(MID(A:A,LEN(D2)+SEARCH(D2,A:A),1), " ","")),
0),1)}