В ячейке A2
(см. Прикрепленное изображение из вопроса) я поместил эту формулу:
=IF($E$2="","",IFERROR(INDEX(A$7:A$28,SMALL(IF(ISNUMBER(SEARCH($E$2,A$7:A$28)),ROW(A$7:A$28)-ROW(A$7)+1),ROWS(A$2:A2))),""))
, затем нажмите CTRL + SHIFT + ENTER , чтобы ввести формулу в виде формулы массива. Наконец, перетащите эту формулу вниз до A5
, а затем перетащите A2:A5
в столбец C
.
Если человек хочет вернуть свои результаты по горизонтали, а не по вертикали (как я это сделал), он просто изменит часть формулы ROWS(A$2:A2)
на COLUMNS(A$2:A2)
и перетянет в сторону соответствующее количество столбцов.
Первоначальная идея для этого решения была от Барри Гудини в качестве ответа на этот вопрос .
Как работает эта формула:
- Оценивает, является ли поле условия поиска (
E2
для этого примера) пустым, если оно есть, оно также сохраняет пустую ячейку результата. В этом примере он не пустой и начинает вычисление.
- Затем он ищет наш поисковый запрос (в нашем примере это «ke»), используя функцию
SEARCH
. Возвращает массив сообщений об ошибках и (для любых совпадений) номеров их позиций в сетке.
- Затем, используя функцию
ISNUMBER
, он преобразует значения в массиве в «ЛОЖЬ» и «ИСТИНА» в зависимости от того, что SEARCH
вернуло на предыдущем шаге. В нашем примере эта ячейка будет возвращать «ИСТИНА» в третьей позиции массива.
- Поскольку в нашей функции
IF
есть ответ "ИСТИНА", мы теперь оценим, что вернуть для этого конкретного места в массиве. Секция ROW(A$7:A$28)-ROW(A$7)+1
преобразует все абсолютные значения строки нашего массива в относительные значения, основанные на начальном местоположении нашего массива.
- Внутри нашей
SMALL
функции теперь у нас есть массив, содержащий «FALSE» и любые относительные позиции совпадений (в данном примере «3»).
- Следующий шаг оценки - это наш «n-й счетчик» в конце нашей формулы. Поскольку мы находимся в позиции, которая выдаст наш первый результат (
A2
), он вернет число «1».
- Наша функция
SMALL
оценивает и возвращает первый наименьший результат («FALSE» исключается, а возвращаемое число равно 3 из шага 5).
- Наша функция
INDEX
теперь оценивает и возвращает ячейку в третьей позиции массива A$7:A$28
, которая называется "Микки Маус".