Как найти сразу несколько значений в Excel: от простых фильтров до Power Query

Работа с большими массивами данных в Microsoft Excel часто требует поиска не одного, а сразу нескольких значений. Например, вам нужно найти все строки с определёнными артикулами, фамилиями клиентов или кодами товаров. Вручную перебирать тысячи строк — неэффективно, а стандартный поиск по Ctrl+F ищет только одно значение за раз. К счастью, в Excel есть минимум 7 способов решить эту задачу — от элементарных фильтров до продвинутых инструментов вроде Power Query.

В этой статье разберём каждый метод с практическими примерами: когда какой использовать, какие подводные камни ждут новичков, и как автоматизировать процесс для регулярных задач. Вы узнаете, как:

  • 🔍 Применять расширенный фильтр для поиска по нескольким критериям одновременно
  • 📊 Использовать функции ВПР и ПОИСКПОЗ для массового сопоставления данных
  • 🔄 Автоматизировать поиск с помощью Power Query (без формул!)
  • 📌 Создавать динамические диапазоны для гибкого поиска

Все примеры адаптированы для Excel 2016–2023 и Microsoft 365, но большинство методов работают и в старых версиях (2010–2013) с незначительными корректировками. Если вы работаете с Google Таблицами, отдельно укажем различия.

📊 Какой инструмент Excel вы используете чаще для поиска данных?
Фильтры
Функции ВПР/ИНДЕКС
Power Query
Условное форматирование
Другой

1. Расширенный фильтр: поиск по нескольким значениям за 3 клика

Самый простой способ найти несколько значений — расширенный фильтр. Он позволяет отфильтровать данные по списку критериев, который вы задаёте в отдельном диапазоне. Например, если у вас таблица с продажами, и вы хотите увидеть строки только для товаров "А001", "Б005" и "В012".

Как это работает:

  1. Создайте таблицу с данными (например, A1:D100).
  2. В отдельном месте (например, F1:F4) перечислите искомые значения в столбик (важно: без пустых ячеек!).
  3. Выделите исходную таблицу, затем перейдите на вкладку Данные → Сортировка и фильтр → Дополнительно.
  4. В окне фильтра укажите:
    • 📍 Исходный диапазон — ваша таблица (например, $A$1:$D$100).
    • 📍 Диапазон условий — ячейки с критериями (например, $F$1:$F$3).
    • 📍 Отметьте Фильтровать список на месте.

Excel скрывает все строки, кроме тех, что соответствуют хотя бы одному из указанных значений. Важный нюанс: если в диапазоне условий есть пустые ячейки, фильтр их проигнорирует, но это может привести к ошибкам при обновлении данных.

Создать копию исходных данных (на случай ошибки)

Убедиться, что критерии в одном столбце

Проверить отсутствие пустых ячеек в диапазоне условий

Зафиксировать диапазоны абсолютными ссылками ($A$1)

-->

Исходные данные (A1:D6) Критерии (F1:F3) Результат после фильтра
Артикул | Название | Цена

А001 | Товар 1 | 100

Б005 | Товар 2 | 200

В012 | Товар 3 | 150

А001 | Товар 1 | 100

Г007 | Товар 4 | 300

Артикул

А001

В012

Артикул | Название | Цена

А001 | Товар 1 | 100

А001 | Товар 1 | 100

В012 | Товар 3 | 150

⚠️ Внимание: Расширенный фильтр не работает с объединёнными ячейками в исходной таблице. Если они есть, сначала разъедините их через Главная → Объединить и поместить в центре.

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. Условное форматирование: визуальная подсветка найденных значений

Если вам не нужно извлекать данные, а достаточно просто найти и подсветить все вхождения нескольких значений, используйте условное форматирование. Этот метод наглядно выделит все совпадения цветом.

Инструкция:

  1. Выделите диапазон, в котором хотите искать (например, A2:A100).
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу:
    =ИЛИ(A2=$F$2; A2=$F$3; A2=$F$4)

    где F2:F4 — ячейки с искомыми значениями.

  5. Задайте формат (например, заливка жёлтым) и нажмите ОК.

Теперь все ячейки со значениями из 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). Чтобы отфильтровать заказы только по этим артикулам:

  1. Перейдите на вкладку Данные → Получить данные → Из других источников → Пустая запрос.
  2. В редакторе Power Query выполните:
    let
    

    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

    Артикулы = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],

    Фильтрованные = Table.SelectRows(Источник, each List.Contains(Артикулы[Артикул], [Артикул]))

    in

    Фильтрованные

  3. Нажмите Закрыть и загрузить — результат появится на новом листе.

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. Поиск с помощью сводных таблиц

Если вам нужно не только найти значения, но и проанализировать их (например, посчитать сумму продаж по выбранным артикулам), сводная таблица — идеальный инструмент. Она позволяет:

  • 📊 Группировать данные по нескольким критериям.
  • 📈 Считать суммы, средние, количество.
  • 🔍 Фильтровать данные по списку значений.

Как это сделать:

  1. Выделите исходную таблицу и нажмите Вставка → Сводная таблица.
  2. В настройках сводной таблицы добавьте нужные поля в Строки и Значения.
  3. Для фильтрации по списку:
    • Добавьте поле с артикулами в Фильтры.
    • В выпадающем списке фильтра выберите Фильтр по меткам.
    • Отметьте галочками нужные значения (или используйте поиск).

Сводные таблицы удобны для интерактивного анализа: вы можете менять критерии фильтрации на лету, не переписывая формулы. Чтобы автоматизировать процесс, создайте срез (Анализ → Вставить срез) и свяжите его со сводной таблицей.

Пример: если у вас есть сводная таблица по продажам, а в отдельном столбце — список приоритетных артикулов, вы можете:

  1. Создать срез по полю "Артикул".
  2. Настроить Параметры среза → Настройка полей среза так, чтобы отображались только значения из вашего списка.
  3. Частые ошибки и как их избежать

    При массовом поиске в Excel пользователи часто сталкиваются с типичными проблемами. Вот самые распространённые и способы их решения:

    Ошибка Причина Решение
    #Н/Д в ВПР Искомое значение отсутствует в таблице Используйте ЕСЛИОШИБКА(ВПР(...); "Не найдено")
    Фильтр не находит значения В диапазоне условий есть пустые ячейки Удалите пустые строки или используйте СЧЁТЗ для динамического диапазона
    #ЗНАЧ! в ИНДЕКС+ПОИСКПОЗ Диапазоны не совпадают по размеру Проверьте, что оба диапазона имеют одинаковое количество строк
    Условное форматирование не работает Формула ссылается на неверный диапазон Используйте абсолютные ссылки ($A$2) для критериев
    #ПУСТО! в ФИЛЬТР Нет совпадений по критериям Добавьте третий аргумент: ФИЛЬТР(..., ..., "Нет данных")

    Ещё одна частая проблема — медленная работа формул на больших массивах данных. Если ваша таблица содержит более 100 000 строк, избегайте вложенных ВПР и отдавайте предпочтение Power Query или сводным таблицам. Также можно:

    • 🔹 Отключить автоматический пересчёт формул (Формулы → Параметры вычислений → Вручную).
    • 🔹 Преобразовать данные в таблицу Excel (Ctrl+T) — это ускорит фильтрацию.
    • 🔹 Использовать надстройки вроде Power Pivot для работы с миллионами строк.

    FAQ: Ответы на популярные вопросы

    Можно ли искать значения по частичному совпадению (например, все артикулы, начинающиеся на "А")?

    Да, для этого используйте:

    • 🔹 В ВПР или ПОИСКПОЗ: добавьте подстановочный знак (например, ВПР("А"; ...)).
    • 🔹 В ФИЛЬТР: =ФИЛЬТР(A2:C100; ПОИСК("А"; A2:A100)=1).
    • 🔹 В условном форматировании: =НЕОШИБКА(ПОИСК("А"; A2)).

Для поиска по регулярным выражениям в Google Таблицах используйте REGEXMATCH.

Как найти несколько значений и скопировать их в другую таблицу?

Есть несколько способов:

  1. Расширенный фильтр с опцией Скопировать результат в другое место (указываете диапазон для вывода).
  2. Power Query: загрузите данные в редактор, отфильтруйте и экспортируйте на новый лист.
  3. Формулы: используйте ФИЛЬТР (Excel 365) или ИНДЕКС+ПОИСКПОЗ для извлечения данных.

Пример с ФИЛЬТР:

=ФИЛЬТР(ИсходнаяТаблица; (ИсходнаяТаблица[Артикул]=F2)+(ИсходнаяТаблица[Артикул]=F3))
Почему ВПР не находит значение, хотя оно есть в таблице?

Чаще всего это связано с:

  • 🔹 Пробелами или невидимыми символами (используйте СЖПРОБЕЛЫ или ПЕЧСИМВ для проверки).
  • 🔹 Регистром букв (Excel чувствителен к регистру в точном поиске).
  • 🔹 Числовыми форматами (например, "001" как текст vs 1 как число).

Решение: перед поиском приведите данные к единому формату с помощью ЗНАЧЕН или ТЕКСТ.

Как искать значения в 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. Берёт данные с Лист1.
  2. Ищет значения из диапазона F2:F....
  3. Копирует найденные строки на новый лист.

Для запуска нажмите Alt+F8, выберите макрос и кликните Выполнить.