Excel - подстрока соответствия из списка вариантов - INDEX, MATCH и FIND используются вместе

Я хотел бы найти конкретный заголовок фильма в списке заголовков видео, выполнить поиск по MATCH и использовать Index, чтобы вернуть его описание. Я знаю, что это можно сделать с помощью текстового поиска в фильтре через столбец A, но я бы хотел сделать это с помощью формулы.

** РЕДАКТИРОВАТЬ: я думаю, что первая версия этого вопроса показалось, что у меня есть только несколько фильмов и названий. Эта статистика может помочь:

Column A: 2,000 Total Video Titles (movie titles can appear more than once)
Column E: 50 Movie Titles
Column F: 50 Movie Descriptions

Пример:

Video titles (2000)             Movie Titles    Movie Description
Spiderman Review and BTS        Spiderman   Spiderman_description
Dark Knight clips               Star Wars   Star Wars_description
Fun Fact Star Wars              Dark Knight Dark Night_description
Why I love Dark Knight                  
Dark Knight highlight                   
Always watch dark knight alone      

В B2 я могу напечатать

=if(isnumber(find("Spiderman",A2)),index(F2:F4,match("Spiderman",E2:E4,0)))

Затем я могу повторить эту формулу для каждого фильма, но пока полный список насчитывает более 50 фильмов. Я хотел бы создать что-то вроде этого:

{Index($F$2:$F$4,match(TRUE,isnumber(find($E$2:$E$4,A2)),0))}

Таким образом, я буду искать A2, чтобы увидеть, возвращает ли FIND ЛЮБОЕ совпадение из списка, а затем возвращать описание, используя INDEX. Но эта формула не работает. Где я неправ?

Ответ 1

Две идеи,

1) Имейте вспомогательный столбец в column B и получите описание в column C. введите описание изображения здесь

Формула в column B,

=MATCH("*"&E2&"*",A:A,0)

Формула в column C,

=INDEX(E:F,MATCH(ROW(),B:B,0),2)

2) Выполняя это по-другому с помощью простой формулы index match введите описание изображения здесь

Формула в column G (исходное название),

=INDEX(A:A,MATCH("*"&E2&"*",A:A,0),1)

Ответ 2

По моему мнению, это невозможно решить только по формуле.
Использование VBA может сделать.

Сначала добавьте новый модуль.

Во-вторых, добавьте следующую функцию:

Function GetRow(xCell As Range, xRange As Range)
    i = 2
    Do
        If Cells(i, xRange.Column).Value = "" Then
            Exit Do
        ElseIf InStr(1, Cells(xCell.Row, xCell.Column).Value, Cells(i, xRange.Column).Value) > 0 Then
            GetRow = Cells(i, xRange.Column + 1).Value
        End If
        i = i + 1
    Loop
End Function

В-третьих, добавьте формулу во все строки в столбце B:

=GetRow($A7; E:E)