Как в Excel сделать поиск нескольких значений одновременно: 5 рабочих методов

Microsoft Excel — мощный инструмент для работы с данными, но стандартный поиск по Ctrl+F ищет только одно значение за раз. Что делать, если нужно найти сразу несколько элементов — например, все товары из списка поставщиков или сотрудников с определёнными должностями? В этой статье разберём 5 способов, которые сэкономят вам часы ручной работы.

Мы рассмотрим как простые методы (фильтры и условное форматирование), так и продвинутые — с использованием функций ПОИСКПОЗ/ИНДЕКС, Power Query и даже VBA для автоматизации. Каждый способ подходит для разных задач: от разового поиска до создания динамических отчётов. Выбирайте подходящий по уровню сложности и объёму данных.

1. Быстрый поиск через расширенный фильтр

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

Допустим, у вас есть таблица с продажами, и вы хотите найти все записи, где в колонке Товар встречаются "Ноутбук", "Монитор" или "Клавиатура". Вот как это сделать:

  • 📌 Шаг 1. Создайте отдельный список искомых значений (например, в столбце E1:E3). Каждое значение — в отдельной ячейке.
  • 📌 Шаг 2. Выделите исходную таблицу (включая заголовки). Перейдите на вкладку Данные → Фильтр → Расширенный фильтр.
  • 📌 Шаг 3. В поле Диапазон условий укажите адрес вашего списка (например, $E$1:$E$3). Отметьте галочку Скопировать результат в другое место и укажите ячейку для вывода.

Готово! Excel выведет все строки, где в колонке Товар есть хотя бы одно из указанных значений. Важно: расширенный фильтр чувствителен к регистру — "ноутбук" и "Ноутбук" для него разные значения.

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

Создать список искомых значений в отдельном столбце

Убедиться, что в списке нет пустых ячеек

Выделить исходную таблицу с заголовками

Проверить чувствительность к регистру (при необходимости привести данные к одному регистру)-->

2. Условное форматирование для визуального поиска

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

Пример: подсветим все ячейки в колонке Город, где встречаются "Москва", "Санкт-Петербург" или "Казань".

  • 🎨 Шаг 1. Выделите диапазон с данными (например, B2:B100).
  • 🎨 Шаг 2. Перейдите на вкладку Главная → Условное форматирование → Создать правило → Использовать формулу....
  • 🎨 Шаг 3. Введите формулу:
    =ИЛИ(B2="Москва"; B2="Санкт-Петербург"; B2="Казань")

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

Теперь все ячейки с указанными городами будут выделены. Преимущество метода — динамичность: если данные в таблице изменятся, подсветка обновится автоматически.

МетодПлюсыМинусыКогда использовать
Расширенный фильтрБыстро, не требует формулНе обновляется автоматическиРазовый поиск в больших таблицах
Условное форматированиеВизуально наглядно, динамичноНе извлекает данные, только подсвечиваетАнализ данных без выгрузки
Функции ПОИСКПОЗ/ИНДЕКСГибкость, работает с динамическими диапазонамиСложнее настроитьСоздание отчётов по нескольким критериям

Расширенный фильтр

Условное форматирование

Функции ПОИСКПОЗ/ИНДЕКС

Power Query

Не знаю, что это-->

3. Поиск с помощью функций ПОИСКПОЗ и ИНДЕКС

Для динамического поиска по нескольким критериям подойдёт комбинация функций ПОИСКПОЗ и ИНДЕКС. Этот метод позволяет извлекать данные по списку значений и обновлять результаты при изменении исходных данных.

Предположим, у вас есть таблица с заказами, и вы хотите найти все строки, где Статус равен "Оплачен" или "Доставлен", а Сумма превышает 10 000 ₽. Вот формула для извлечения таких строк:

=ЕСЛИОШИБКА(

ИНДЕКС($A$2:$D$100;

ПОИСКПОЗ(0;

(--($B$2:$B$100="Оплачен")+--($B$2:$B$100="Доставлен"))*

--($C$2:$C$100>10000)*

(СТРОКА($A$2:$A$100)-СТРОКА($A$2)+1);

0);

""

)

Эта формула массива (вводится через Ctrl+Shift+Enter в старых версиях Excel) возвращает первую строку, соответствующую условиям. Чтобы извлечь все строки, протяните формулу вниз.

⚠️ Внимание: В Excel 365 и Excel 2021 формулы массива вводятся без Ctrl+Shift+Enter — просто нажмите Enter. В более старых версиях без массива формула не сработает.
Как работает формула?

Функция --($B$2:$B$100="Оплачен") преобразует логические значения ИСТИНА/ЛОЖЬ в 1/0, а умножение этих массивов даёт позицию строки, где выполняются все условия. ПОИСКПОЗ(0; ...) находит первую позицию, где произведение равно 0 (т.е. все условия совпадают).

4. Power Query: поиск по нескольким значениям в больших данных

Если вы работаете с огромными таблицами (десятки тысяч строк), Power Query — самый эффективный инструмент. Он позволяет фильтровать данные по нескольким критериям без нагрузки на Excel.

Алгоритм действий:

  • 🔄 Шаг 1. Выделите исходную таблицу и нажмите Данные → Из таблицы/диапазонаExcel 2016+).
  • 🔄 Шаг 2. В редакторе Power Query выберите колонку для фильтрации (например, Категория).
  • 🔄 Шаг 3. Нажмите на стрелку фильтра → Текстовые фильтры → Равно... и введите первое значение (например, "Электроника").
  • 🔄 Шаг 4. Повторите шаг 3 для остальных значений, выбрав ИЛИ в меню фильтра.
  • 🔄 Шаг 5. Нажмите Закрыть и загрузить, чтобы вернуть отфильтрованные данные в Excel.

Преимущество Power Queryнезависимость от размера таблицы. Даже если у вас 100 000 строк, фильтрация займёт секунды. Кроме того, запрос можно сохранить и обновлять одним кликом.

5. Автоматизация поиска с помощью VBA

Для продвинутых пользователей, которым нужно регулярно искать разные наборы значений, подойдёт макрос на VBA. Он позволит создавать гибкие фильтры по любым критериям и даже сохранять результаты в отдельный файл.

Пример макроса, который копирует строки с несколькими искомыми значениями в новую книгу:

Sub SearchMultipleValues()

Dim wsSource As Worksheet, wsDest As Worksheet

Dim rngData As Range, rngCriteria As Range

Dim cell As Range, crit As Variant

Dim lastRow As Long, i As Long

' Настройка исходных данных

Set wsSource = ThisWorkbook.Sheets("Лист1") ' Источник

Set rngData = wsSource.Range("A1").CurrentRegion ' Диапазон данных

Set rngCriteria = wsSource.Range("F1:F3") ' Диапазон с искомыми значениями

' Создание новой книги для результатов

Set wsDest = Workbooks.Add.Worksheets(1)

rngData.Rows(1).Copy wsDest.Range("A1") ' Копируем заголовки

' Поиск и копирование строк

lastRow = 2

For Each cell In rngCriteria

crit = cell.Value

For i = 2 To rngData.Rows.Count

If InStr(1, rngData.Cells(i, 2).Value, crit, vbTextCompare) > 0 Then

rngData.Rows(i).Copy wsDest.Range("A" & lastRow)

lastRow = lastRow + 1

End If

Next i

Next cell

' Удаление дубликатов

wsDest.Range("A1").CurrentRegion.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes

End Sub

Этот макрос ищет значения из диапазона F1:F3 в втором столбце исходной таблицы и копирует найденные строки в новую книгу. Чтобы адаптировать его под свою задачу:

  • 🔧 Измените Sheets("Лист1") на имя вашего листа.
  • 🔧 Замените Range("F1:F3") на диапазон со своими значениями.
  • 🔧 В строке rngData.Cells(i, 2) цифра 2 — это номер столбца для поиска (1 = столбец A, 2 = B и т.д.).
⚠️ Внимание: Перед запуском макроса сохраните книгу в формате .xlsm (с поддержкой макросов). В противном случае Excel заблокирует выполнение кода.

Сравнение методов: какой выбрать?

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

  • 📊 Разовый поиск в небольшой таблице (до 10 000 строк): расширенный фильтр или условное форматирование.
  • 📊 Регулярный поиск по нескольким критериям: функции ПОИСКПОЗ/ИНДЕКС или Power Query.
  • 📊 Обработка больших данных (100 000+ строк): только Power Query или VBA.
  • 📊 Автоматизация отчётов: VBA или комбинация Power Query + ПОИСКПОЗ.

Для большинства задач достаточно первых трёх методов. VBA и Power Query пригодятся, если вы работаете с данными профессионально — например, формируете отчёты для бухгалтерии или аналитики.

FAQ: Частые вопросы по поиску нескольких значений

Можно ли искать значения с учётом регистра?

Да, но не все методы это поддерживают. Расширенный фильтр и функции Excel (например, НАЙТИ) чувствительны к регистру, а ПОИСК — нет. В Power Query можно использовать параметр Comparer.Ordinal для точного сопоставления.

Как искать по частичному совпадению (например, "ноут*" для "ноутбук")?

Используйте подстановочные знаки:

  • В расширенном фильтре введите =ноут (звёздочка заменяет любые символы).
  • В формулах применяйте ПОИСК("ноут"; A2) или РАЗНСТР(A2; "ноут")=ЛОЖЬ.
  • В Power Query используйте фильтр Текст содержит.
Почему ПОИСКПОЗ возвращает ошибку #Н/Д?

Ошибка #Н/Д означает, что ни одно из значений не найдено. Проверьте:

  • Правильно ли указан диапазон поиска (например, $A$2:$A$100 вместо A2:A100).
  • Совпадают ли типы данных (текст vs число). Например, ПОИСКПОЗ(123; A2:A100) не найдёт ячейку с текстом "123".
  • Нет ли скрытых символов (пробелов, неразрывных пробелов). Используйте СЖПРОБЕЛЫ для очистки данных.
Как сохранить результаты поиска в отдельный файл?

Способы в зависимости от метода:

  • Расширенный фильтр: при настройке отметьте Скопировать результат в другое место и укажите новый лист. Затем скопируйте его в другую книгу.
  • Power Query: после фильтрации нажмите Закрыть и загрузить в...Новая книга.
  • VBA: используйте код из раздела 5 — он автоматически создаёт новую книгу с результатами.
Можно ли искать значения из другой книги Excel?

Да, но с ограничениями:

  • Формулы: используйте ссылки вида =ПОИСКПОЗ(A2; [Книга2.xlsx]Лист1!$A$2:$A$100; 0). Обе книги должны быть открыты.
  • Power Query: подключите внешнюю книгу как источник данных (Данные → Получить данные → Из файла → Из книги Excel).
  • VBA: откройте вторую книгу в коде с помощью Workbooks.Open("Путь\к\файлу.xlsx").

⚠️ При закрытии внешней книги ссылки в формулах прервутся (вернут #ССЫЛКА!).