Работа с большими массивами данных в Microsoft Excel часто требует поиска не одного, а сразу нескольких значений. Например, вам нужно найти все строки с определёнными артикулами, фамилиями клиентов или кодами товаров. Вручную перебирать тысячи строк — неэффективно, а стандартный поиск по Ctrl+F ищет только одно значение за раз. К счастью, в Excel есть минимум 7 способов решить эту задачу — от элементарных фильтров до продвинутых инструментов вроде Power Query.
В этой статье разберём каждый метод с практическими примерами: когда какой использовать, какие подводные камни ждут новичков, и как автоматизировать процесс для регулярных задач. Вы узнаете, как:
- 🔍 Применять расширенный фильтр для поиска по нескольким критериям одновременно
- 📊 Использовать функции ВПР и ПОИСКПОЗ для массового сопоставления данных
- 🔄 Автоматизировать поиск с помощью Power Query (без формул!)
- 📌 Создавать динамические диапазоны для гибкого поиска
Все примеры адаптированы для Excel 2016–2023 и Microsoft 365, но большинство методов работают и в старых версиях (2010–2013) с незначительными корректировками. Если вы работаете с Google Таблицами, отдельно укажем различия.
1. Расширенный фильтр: поиск по нескольким значениям за 3 клика
Самый простой способ найти несколько значений — расширенный фильтр. Он позволяет отфильтровать данные по списку критериев, который вы задаёте в отдельном диапазоне. Например, если у вас таблица с продажами, и вы хотите увидеть строки только для товаров "А001", "Б005" и "В012".
Как это работает:
- Создайте таблицу с данными (например,
A1:D100). - В отдельном месте (например,
F1:F4) перечислите искомые значения в столбик (важно: без пустых ячеек!). - Выделите исходную таблицу, затем перейдите на вкладку
Данные → Сортировка и фильтр → Дополнительно. - В окне фильтра укажите:
- 📍 Исходный диапазон — ваша таблица (например,
$A$1:$D$100). - 📍 Диапазон условий — ячейки с критериями (например,
$F$1:$F$3). - 📍 Отметьте
Фильтровать список на месте.
- 📍 Исходный диапазон — ваша таблица (например,
Excel скрывает все строки, кроме тех, что соответствуют хотя бы одному из указанных значений. Важный нюанс: если в диапазоне условий есть пустые ячейки, фильтр их проигнорирует, но это может привести к ошибкам при обновлении данных.
Создать копию исходных данных (на случай ошибки)
Убедиться, что критерии в одном столбце
Проверить отсутствие пустых ячеек в диапазоне условий
Зафиксировать диапазоны абсолютными ссылками ($A$1)
-->
| Исходные данные (A1:D6) | Критерии (F1:F3) | Результат после фильтра |
|---|---|---|
|
|
|
⚠️ Внимание: Расширенный фильтр не работает с объединёнными ячейками в исходной таблице. Если они есть, сначала разъедините их через Главная → Объединить и поместить в центре.
2. Функция ВПР (VLOOKUP): поиск соответствий в другой таблице
Если вам нужно не просто найти строки, а сопоставить данные из одной таблицы с другой (например, подтянуть цены из прайс-листа в заказ), используйте ВПР. Эта функция ищет значение в первом столбце диапазона и возвращает данные из указанного столбца той же строки.
Формула имеет вид:
=ВПР(искомое_значение; таблица_поиска; номер_столбца; [интервальный_просмотр])
Пример: у вас есть список артикулов в столбце A, а в таблице D:E — прайс-лист. Чтобы подтянуть цену для артикула A2:
=ВПР(A2; $D$2:$E$100; 2; ЛОЖЬ)
Где:
- 🔹
A2— искомый артикул. - 🔹
$D$2:$E$100— диапазон прайс-листа (первый столбец — артикулы, второй — цены). - 🔹
2— номер столбца с ценой. - 🔹
ЛОЖЬ— точный поиск (обязательно для нашего случая!).
Чтобы применить ВПР ко всем артикулам в столбце A, просто протяните формулу вниз. Минус метода: если артикул не найдёт, вернёт ошибку #Н/Д. Чтобы скрыть ошибки, оберните формулу в ЕСЛИОШИБКА:
=ЕСЛИОШИБКА(ВПР(A2; $D$2:$E$100; 2; ЛОЖЬ); "Не найдено")
⚠️ Внимание:ВПРработает только если искомые значения находятся в первом столбце диапазона поиска. Если ваши данные организованы иначе, используйте комбинациюИНДЕКС+ПОИСКПОЗ(см. следующий раздел).
3. Комбинация ИНДЕКС + ПОИСКПОЗ: гибкая альтернатива ВПР
Функция ВПР удобна, но имеет ограничения: она не умеет искать влево и требует, чтобы искомые значения были в первом столбце. Более гибкий вариант — сочетание ИНДЕКС и ПОИСКПОЗ.
Пример: у вас таблица с данными о сотрудниках, где A — фамилия, B — отдел, C — зарплата. Вам нужно найти зарплату сотрудника по фамилии, но фамилии не в первом столбце. Формула:
=ИНДЕКС($C$2:$C$100; ПОИСКПОЗ(E2; $A$2:$A$100; 0))
Где:
- 🔹
$C$2:$C$100— столбец с зарплатами. - 🔹
E2— ячейка с искомой фамилией. - 🔹
$A$2:$A$100— столбец с фамилиями. - 🔹
0— точный поиск.
Преимущества этого метода:
- ✅ Работает с любым столбцом (не обязательно первым).
- ✅ Быстрее
ВПРна больших массивах данных. - ✅ Можно искать по нескольким критериям (например, фамилия + отдел).
Для поиска по двум критериям (например, фамилия + отдел) используйте формулу массива:
=ИНДЕКС($C$2:$C$100; ПОИСКПОЗ(1; ($A$2:$A$100=E2)*($B$2:$B$100=F2); 0))
Введите её как Ctrl+Shift+Enter (в новых версиях Excel работает и без этого).
4. Условное форматирование: визуальная подсветка найденных значений
Если вам не нужно извлекать данные, а достаточно просто найти и подсветить все вхождения нескольких значений, используйте условное форматирование. Этот метод наглядно выделит все совпадения цветом.
Инструкция:
- Выделите диапазон, в котором хотите искать (например,
A2:A100). - Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=ИЛИ(A2=$F$2; A2=$F$3; A2=$F$4)где
F2:F4— ячейки с искомыми значениями. - Задайте формат (например, заливка жёлтым) и нажмите
ОК.
Теперь все ячейки со значениями из F2:F4 будут подсвечены. Плюс метода: визуально видно все вхождения, не нужно пролистывать таблицу. Минус: не подходит, если нужно извлечь или обработать данные.
Как сделать динамический диапазон для условного форматирования?
Если искомые значения часто меняются, вместо жёсткого указания ячеек ($F$2) используйте динамический диапазон с функцией СМЕЩ. Например:
=ИЛИ(A2=СМЕЩ($F$2;0;0;СЧЁТЗ($F:$F)-1;1))
Эта формула автоматически подстроится под количество заполненных ячеек в столбце F.
5. Power Query: массовый поиск без формул
Для сложных задач (например, поиск по нескольким таблицам или внешним источникам) идеально подходит Power Query — инструмент для преобразования данных, встроенный в Excel 2016+ и Microsoft 365. Он позволяет:
- 🔄 Объединять данные из нескольких таблиц.
- 📌 Фильтровать строки по списку значений.
- 🔄 Автоматически обновлять результаты при изменении исходных данных.
Пример: у вас есть таблица с заказами (Таблица1) и список артикулов для поиска (Таблица2). Чтобы отфильтровать заказы только по этим артикулам:
- Перейдите на вкладку
Данные → Получить данные → Из других источников → Пустая запрос. - В редакторе Power Query выполните:
letИсточник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
Артикулы = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
Фильтрованные = Table.SelectRows(Источник, each List.Contains(Артикулы[Артикул], [Артикул]))
in
Фильтрованные
- Нажмите
Закрыть и загрузить— результат появится на новом листе.
Power Query особенно полезен, если:
- 📊 Данные хранятся в разных файлах или на разных листах.
- 🔄 Нужно регулярно обновлять отчёты (достаточно нажать
Обновить все). - 📌 Требуется сложная фильтрация (например, по частичному совпадению текста).
⚠️ Внимание: В Google Таблицах аналога Power Query нет, но похожую функциональность можно реализовать черезQUERYилиFILTER. Например:=FILTER(Таблица1!A2:C; REGEXMATCH(Таблица1!A2:A; TEXTJOIN("|"; 1; Таблица2!A2:A)))
6. Функция ФИЛЬТР (FILTER) в Excel 365 и 2021
Если вы используете Microsoft 365 или Excel 2021, у вас есть доступ к новой функции ФИЛЬТР, которая упрощает поиск по нескольким критериям. Она возвращает динамический массив строк, соответствующих условиям.
Синтаксис:
=ФИЛЬТР(массив; включать; [пусто])
Пример: отфильтруем таблицу A2:C100 по артикулам из диапазона F2:F4:
=ФИЛЬТР(A2:C100; (A2:A100=F2)+(A2:A100=F3)+(A2:A100=F4); "Нет данных")
Как это работает:
- 🔹
A2:C100— исходная таблица. - 🔹
(A2:A100=F2)+(A2:A100=F3)+(A2:A100=F4)— условие: вернуть строки, где артикул равен хотя бы одному из значений вF2:F4. - 🔹
"Нет данных"— сообщение, если ничего не найдено.
Преимущества ФИЛЬТР:
- ✅ Динамический результат (обновляется автоматически).
- ✅ Можно фильтровать по нескольким столбцам.
- ✅ Поддерживает частичное совпадение (с функцией
ПОИСК).
Пример с частичным совпадением (найти все артикулы, начинающиеся на "А"):
=ФИЛЬТР(A2:C100; НЕОШИБКА(ПОИСК("А"; A2:A100)); "Нет данных")
7. Поиск с помощью сводных таблиц
Если вам нужно не только найти значения, но и проанализировать их (например, посчитать сумму продаж по выбранным артикулам), сводная таблица — идеальный инструмент. Она позволяет:
- 📊 Группировать данные по нескольким критериям.
- 📈 Считать суммы, средние, количество.
- 🔍 Фильтровать данные по списку значений.
Как это сделать:
- Выделите исходную таблицу и нажмите
Вставка → Сводная таблица. - В настройках сводной таблицы добавьте нужные поля в
СтрокииЗначения. - Для фильтрации по списку:
- Добавьте поле с артикулами в
Фильтры. - В выпадающем списке фильтра выберите
Фильтр по меткам. - Отметьте галочками нужные значения (или используйте поиск).
- Добавьте поле с артикулами в
Сводные таблицы удобны для интерактивного анализа: вы можете менять критерии фильтрации на лету, не переписывая формулы. Чтобы автоматизировать процесс, создайте срез (Анализ → Вставить срез) и свяжите его со сводной таблицей.
Пример: если у вас есть сводная таблица по продажам, а в отдельном столбце — список приоритетных артикулов, вы можете:
- Создать срез по полю "Артикул".
- Настроить
Параметры среза → Настройка полей срезатак, чтобы отображались только значения из вашего списка. - 🔹 Отключить автоматический пересчёт формул (
Формулы → Параметры вычислений → Вручную). - 🔹 Преобразовать данные в таблицу Excel (
Ctrl+T) — это ускорит фильтрацию. - 🔹 Использовать надстройки вроде Power Pivot для работы с миллионами строк.
- 🔹 В
ВПРилиПОИСКПОЗ: добавьте подстановочный знак(например,ВПР("А"; ...)). - 🔹 В
ФИЛЬТР:=ФИЛЬТР(A2:C100; ПОИСК("А"; A2:A100)=1). - 🔹 В условном форматировании:
=НЕОШИБКА(ПОИСК("А"; A2)).
Частые ошибки и как их избежать
При массовом поиске в Excel пользователи часто сталкиваются с типичными проблемами. Вот самые распространённые и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
#Н/Д в ВПР |
Искомое значение отсутствует в таблице | Используйте ЕСЛИОШИБКА(ВПР(...); "Не найдено") |
| Фильтр не находит значения | В диапазоне условий есть пустые ячейки | Удалите пустые строки или используйте СЧЁТЗ для динамического диапазона |
#ЗНАЧ! в ИНДЕКС+ПОИСКПОЗ |
Диапазоны не совпадают по размеру | Проверьте, что оба диапазона имеют одинаковое количество строк |
| Условное форматирование не работает | Формула ссылается на неверный диапазон | Используйте абсолютные ссылки ($A$2) для критериев |
#ПУСТО! в ФИЛЬТР |
Нет совпадений по критериям | Добавьте третий аргумент: ФИЛЬТР(..., ..., "Нет данных") |
Ещё одна частая проблема — медленная работа формул на больших массивах данных. Если ваша таблица содержит более 100 000 строк, избегайте вложенных ВПР и отдавайте предпочтение Power Query или сводным таблицам. Также можно:
FAQ: Ответы на популярные вопросы
Можно ли искать значения по частичному совпадению (например, все артикулы, начинающиеся на "А")?
Да, для этого используйте:
Для поиска по регулярным выражениям в Google Таблицах используйте REGEXMATCH.
Как найти несколько значений и скопировать их в другую таблицу?
Есть несколько способов:
- Расширенный фильтр с опцией
Скопировать результат в другое место(указываете диапазон для вывода). - Power Query: загрузите данные в редактор, отфильтруйте и экспортируйте на новый лист.
- Формулы: используйте
ФИЛЬТР(Excel 365) илиИНДЕКС+ПОИСКПОЗдля извлечения данных.
Пример с ФИЛЬТР:
=ФИЛЬТР(ИсходнаяТаблица; (ИсходнаяТаблица[Артикул]=F2)+(ИсходнаяТаблица[Артикул]=F3))
Почему ВПР не находит значение, хотя оно есть в таблице?
Чаще всего это связано с:
- 🔹 Пробелами или невидимыми символами (используйте
СЖПРОБЕЛЫилиПЕЧСИМВдля проверки). - 🔹 Регистром букв (Excel чувствителен к регистру в точном поиске).
- 🔹 Числовыми форматами (например,
"001"как текст vs1как число).
Решение: перед поиском приведите данные к единому формату с помощью ЗНАЧЕН или ТЕКСТ.
Как искать значения в Google Таблицах?
В Google Таблицах доступны аналоги большинства методов:
- 🔹 Фильтр:
FILTER(A2:C; REGEXMATCH(A2:A; "А001|Б005")). - 🔹 VLOOKUP: работает как
ВПР, но поддерживает регулярные выражения. - 🔹 QUERY: мощный инструмент для сложных запросов:
=QUERY(A2:C; "SELECT * WHERE A matches 'А001|Б005'"; 1)
Для условного форматирования используйте custom formula с REGEXMATCH.
Можно ли автоматизировать поиск с помощью VBA?
Да, VBA позволяет создавать макросы для массового поиска. Пример кода для поиска значений из списка и копирования строк в новый лист:
Sub FindMultipleValues()
Dim wsSource As Worksheet, wsResult As Worksheet
Dim rngData As Range, rngCriteria As Range
Dim cell As Range, crit As Range
Dim lastRow As Long, i As Long
Set wsSource = ThisWorkbook.Sheets("Лист1") ' исходные данные
Set wsResult = ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
wsResult.Name = "Результаты"
Set rngData = wsSource.Range("A1").CurrentRegion
Set rngCriteria = wsSource.Range("F2:F" & wsSource.Cells(wsSource.Rows.Count, "F").End(xlUp).Row)
' Копируем заголовки
rngData.Rows(1).Copy wsResult.Range("A1")
' Поиск и копирование строк
i = 2
For Each crit In rngCriteria
For Each cell In rngData.Columns(1).Cells
If cell.Value = crit.Value Then
cell.EntireRow.Copy wsResult.Cells(i, 1)
i = i + 1
End If
Next cell
Next crit
End Sub
Этот макрос:
- Берёт данные с
Лист1. - Ищет значения из диапазона
F2:F.... - Копирует найденные строки на новый лист.
Для запуска нажмите Alt+F8, выберите макрос и кликните Выполнить.