Когда нужно найти какие-либо данные в таблице Excel, вы можете использовать несколько функций. Например, функция ВПР или ИНДЕКС вместе с ПОИСКПОЗ.
Эти функции ищут в таблице заданный фрагмент и останавливаются на первом совпадении. Но что если вам нужно найти не только первое совпадение, а все?
Итак, начнём!
В этой статье я продемонстрирую вам, как можно сделать это.
Поиск фрагмента по всей таблице, второе, третье и N-ое совпадение
С помощью добавления нового столбца
Допустим, у вас есть следующая табличка:
Например, вам необходимо перечислить все «Training» которые прошел человек, в ячейках после его имени.
Узнайте Excel как свои пять пальцев на курсе по таблицам от Skillbox
Итак, мы можем вызвать функцию ВПР или ИНДЕКС (вместе с ПОИСКПОЗ), но тут есть небольшая проблема — когда функция найдет первое совпадение (например для Джона) она остановится и вернет вам результат.
К примеру, Джон прошел все тренинги, но если мы будем использовать вышеуказанные функции, результатом будет только «Excel». Функция нашла первое совпадение имени Джон, остановилась и передала нам результат. Но как же сделать так, чтобы она не останавливалась на первом совпадении?
Можно добавить столбец и провести нехитрые манипуляции с ним.
Пошаговая инструкция:
- Вставим столбец «Помощник» сразу после имени;
- В первую свободную ячейку пропишем:
=A2&СЧЁТЕСЛИ($A$2:$A2;A2)
- А теперь, в другой столбик пропишем следующую функцию:
=ЕСНД(ВПР($E2&ЧИСЛСТОЛБ($F$1:F1);$B$2:$C$14;2;0);"")
Эта функция, в следующих столбиках, укажет какие тренинги прошел человек, если какой-то тренинг он не прошел — будет просто пустое место.
Что делает эта функция?
Мы используем небольшую хитрость. Функция СЧЁТЕСЛИ делает каждое новое имя человека уникальным. Как она это делает? — очень просто, она добавляет цифру к имени, например, Джон1, Джон2 и так далее.
Получается, что теперь функция ВПР не остановится при первом совпадении, потому что их не будет. Теперь все имена и даже одинаковые — уникальны (из-за цифр в конце имени).
$E2&ЧИСЛСТОЛБ ($F$1:F1) это сам фрагмент, по которому происходит поиск. Функция ЧИСЛСТОЛБ добавляет цифру, ориентируясь на номер строки, к концу имени, а дальше уже происходит поиск по этому фрагменту.
С помощью массива
Если вам, по каким-то причинам, не нравится, или вы не можете использовать способ с добавлением столбика, есть еще один вариант.
Допустим, у нас та же табличка:
Такая функция тоже вернет правильный результат:
=ЕСЛИОШИБКА(ИНДЕКС($B$2:$B$14;НАИМЕНЬШИЙ(ЕСЛИ($A$2:$A$14=$D2;СТРОКА($A$2:$A$14)-1;"");ЧИСЛСТОЛБ($E$1:E1)));"")
Чтобы вставить её, вам нужно выделить ячейки, в которые нужно вставить данные (в нашем случае, от E2 до G9).
И еще, важный момент, когда пропишете саму функцию, нажмите CTRL+SHIFT+ENTER, вместо ENTER. Так нужно сделать, потому что мы работаем с массивом данных.
Что делает эта функция?
Рекомендуем курс Excel по анализу данных от Skypro — очень глубокое и яркое погружение в Эксель.
Итак, давайте разберемся:
$A$2:$A$14=$D2
Этот фрагмент нашей функции сравнивает значения с ячейкой D2.
Результат либо ИСТИНА либо ЛОЖЬ.
Пример результата выполнения:
{ИСТИНА;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ИСТИНА;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ИСТИНА;ЛОЖЬ;ЛОЖЬ}
Продолжим и рассмотрим следующий фрагмент:
ЕСЛИ($A$2:$A$14=$D2;СТРОКА($A$2:$A$14)-1;””)
Этот фрагмент нашей функции получает на входе массив данных (ИСТИНА или ЛОЖЬ) и заменяет истину на номер строки из таблички, а ЛОЖЬ на пустое место.
Вот пример выполнения этого фрагмента:
{1;””;””;””;””;””;7;””;””;””;11;””;””}
Далее:
НАИМЕНЬШИЙ(ЕСЛИ($A$2:$A$14=$D2;СТРОКА($A$2:$A$14)-1;””);ЧИСЛСТОЛБ($E$1:E1))
А теперь функция НАИМЕНЬШИЙ запишет все наименьшие порядковые числа, первое, второе, третье и так далее. А функция ЧИСЛСТОЛБ присваивает им номера, в соответствии с номером строки.
ИНДЕКС($B$2:$B$14;НАИМЕНЬШИЙ(ЕСЛИ($A$2:$A$14=$D2;СТРОКА($A$2:$A$14)-1;””);ЧИСЛСТОЛБ($E$1:E1)))
В итоге функция ИНДЕКС, по порядковым номерам, полученным от функции ЧИСЛСТОЛБ, вернет их значения. То есть в первом совпадении возвращается «Excel» и так далее.
Но если возникнет ошибка, а она обязательно возникнет, потому что, в нашем случае, не все люди прошли по 3 тренинга, функция ЕСЛИОШИБКА заменит все ошибки на пустые места.
Итак, в этом разделе статьи мы использовали функцию массива. Это удобно, потому что её можно копировать без каких-либо проблем. Мое мнение — это лучший способ, может быть он и сложнее, но его можно без проблем масштабировать.
нные варианты найти все совпадения, просто я считаю что это самые практичные. Если у вас есть свои «удобные» способы, пожалуйста, поделитесь ими в комментариях.
Узнайте Excel как свои пять пальцев на курсе по таблицам от Skillbox