Почему стандартный поиск в Excel не подходит для нескольких значений
Вы когда-нибудь пытались найти в таблице сразу несколько фамилий, артикулов или дат? Стандартный поиск по Ctrl+F в Microsoft Excel ищет только одно значение за раз — и это раздражает. Представьте: у вас список из 10 000 строк, а нужно выделить все записи с 50 разными кодами товаров. Перебирать их по одному? Это займёт часы.
Проблема в том, что Excel не оптимизирован для множественного поиска по умолчанию. Но есть обходные пути — от простых фильтров до сложных формул и надстроек. В этой статье разберём 7 методов, которые сэкономят вам время, нервы и избавят от рутинной работы. Некоторые из них работают даже в Excel Online и Google Таблицах.
Важно: не все способы одинаково эффективны для больших данных. Например, условное форматирование может тормозить на таблицах с 50 000+ строк, а Power Query потребует изучения. Мы отметим плюсы и минусы каждого метода, чтобы вы выбрали оптимальный.
Метод 1: Фильтр по нескольким значениям (самый простой способ)
Если вам нужно временно скрыть все строки, кроме тех, что содержат одно из искомых значений, используйте расширенный фильтр. Это работает в Excel 2010–2023 и не требует формул.
Алгоритм:
- 📌 Создайте отдельный столбец (например,
Z1:Z10) и впишите туда все искомые значения — каждое в отдельной ячейке. - 🔍 Выделите исходную таблицу (включая заголовки). Перейдите на вкладку
Данные → Фильтр → Расширенный фильтр. - 📋 В поле
Диапазон условийукажите адрес столбца со значениями (например,$Z$1:$Z$10). ОтметьтеСкопировать результат в другое место, если нужно сохранить отфильтрованные данные.
Преимущество метода: не требует знания формул и сохраняет исходные данные. Минус — фильтр приходится настраивать заново при изменении списка значений.
⚠️ Внимание: Если в диапазоне условий есть пустые ячейки, Excel проигнорирует их, но фильтр будет работать медленнее. Удаляйте лишние строки перед применением.
Метод 2: Условное форматирование для визуального поиска
Когда нужно подсветить все ячейки с несколькими значениями (например, выделить красным все строки с определёнными кодами ошибок), используйте условное форматирование с формулой. Этот способ нагляден и позволяет быстро сканировать большие таблицы.
Инструкция:
- Выделите диапазон, где будет применяться форматирование (например,
A2:A1000). - Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=ИЛИ($A2="Значение1"; $A2="Значение2"; $A2="Значение3")Замените
Значение1,Значение2на свои данные. - Задайте цвет заполнения (например, жёлтый) и нажмите
ОК.
Для динамического списка значений (если они хранятся в другом диапазоне, например D2:D10) используйте формулу массива:
=СЧЁТЕСЛИ($D$2:$D$10; $A2)>0
Это автоматически подсветит все ячейки, которые совпадают хотя бы с одним значением из списка.
| Способ | Плюсы | Минусы |
|---|---|---|
| Фильтр | Простота, не требует формул | Нужно настраивать заново при изменении данных |
| Условное форматирование | Визуально наглядно, работает автоматически | Тормозит на больших таблицах (>50 000 строк) |
| Формулы (СЧЁТЕСЛИМН, ВПР) | Гибкость, можно комбинировать с другими функциями | Сложно для новичков |
Метод 3: Формулы для поиска нескольких значений (СЧЁТЕСЛИМН, ЕСЛИ+ИЛИ)
Когда нужно не просто найти, а проанализировать данные (например, посчитать количество строк с несколькими критериями), используйте формулы. Рассмотрим два варианта:
Вариант 1: Простая проверка (ЕСЛИ + ИЛИ)
Если вам нужно проверить, содержится ли значение в списке, и вывести результат в соседнем столбце (например, "Да"/"Нет"), используйте:
=ЕСЛИ(ИЛИ(A2="Значение1"; A2="Значение2"); "Да"; "Нет")
Вариант 2: Подсчёт совпадений (СЧЁТЕСЛИМН)
Чтобы посчитать, сколько раз встречаются одновременно несколько значений в разных столбцах (например, "Мужчины старше 30 лет из Москвы"), используйте:
=СЧЁТЕСЛИМН(B2:B100; "Муж"; C2:C100; ">30"; D2:D100; "Москва")
Для поиска любого из нескольких значений в одном столбце комбинируйте СЧЁТЕСЛИ с суммированием:
=СУММ(СЧЁТЕСЛИ(A2:A100; {"Значение1"; "Значение2"; "Значение3"}))
⚠️ Внимание: Формулы массива (как в последнем примере) в старых версиях Excel (до 2019) требуют подтверждения клавишами Ctrl+Shift+Enter. В Excel 365 это не нужно.
Метод 4: Power Query для сложных поисков (продвинутый уровень)
Если вы работаете с большими данными (100 000+ строк) или нужно искать значения по частичному совпадению (например, все email с доменом @gmail.com), Power Query станет вашим спасением. Этот инструмент встроен в Excel 2016+ и позволяет:
- 🔄 Фильтровать данные по нескольким критериям одновременно.
- 🔍 Искать по регулярным выражениям (например, все артикулы, начинающиеся на
ART-). - 📊 Объединять данные из разных источников (Excel, CSV, базы данных).
Пример: как отфильтровать таблицу по 10 кодам товаров:
- Выделите исходную таблицу →
Данные → Из таблицы/диапазона(в Excel 2016–2019 илиДанные → Получить данные → Из таблицы/диапазонав Excel 365). - В открывшемся редакторе Power Query выберите столбец для фильтрации →
Фильтр по условию → Равно. - В поле фильтра введите первое значение, затем нажмите
Добавить в фильтри выберитеИли, чтобы добавить остальные. - Нажмите
Закрыть и загрузить, чтобы вернуть отфильтрованные данные в Excel.
Power Query — единственный метод, который не тормозит на таблицах с миллионами строк и позволяет сохранять шаги фильтрации для повторного использования.
Как искать по регулярным выражениям в Power Query?
В Power Query перейдите в Добавить столбец → Пользовательский столбец и используйте функцию Text.Select или Text.Contains с регулярными выражениями. Например, чтобы найти все ячейки с буквами "АБ" в любом регистре, используйте формулу:
= Table.SelectRows(#"Предыдущий шаг", each Text.Contains(Text.Upper([Столбец]), "АБ"))
Метод 5: Поиск с помощью сводных таблиц
Сводные таблицы умеют группировать данные по нескольким критериям и показывать только нужные значения. Этот метод полезен, если вам нужно не просто найти строки, а проанализировать их распределение.
Как это работает:
- Выделите исходные данные →
Вставка → Сводная таблица. - В поле
Строкиперетащите столбец, по которому нужно искать (например, "Категория товара"). - В поле
Фильтрыперетащите тот же столбец, затем нажмите на стрелочку фильтра и выберите нужные значения (можно несколько, удерживаяCtrl). - В поле
Значениядобавьте столбец для анализа (например, "Сумма продаж").
Преимущество: сводные таблицы автоматически обновляются при изменении исходных данных. Минус: не подходит, если нужно выделить или скопировать найденные строки в отдельную таблицу.
Убедитесь, что в таблице нет пустых строк или столбцов
Преобразуйте данные в "умную таблицу" (Ctrl+T)
Проверьте, что заголовки столбцов уникальны
Удалите объединённые ячейки (они мешают сводным таблицам)
-->
Метод 6: Поиск по частичному совпадению (подстановочные знаки)
Что делать, если нужно найти все ячейки, которые содержат определённую подстроку (например, все email с доменом @company.com или артикулы, начинающиеся на PR-)? Здесь помогут подстановочные знаки:
(звёздочка) — заменяет любое количество символов. Например,@gmail.comнайдёт все email с этим доменом.?(вопросительный знак) — заменяет один символ. Например,А??1найдётАБВ1,А121и т.д.~(тильда) — экранирует подстановочные знаки. Например, чтобы найти именно, используйте~.
Как применить:
- Нажмите
Ctrl+F(поиск) илиCtrl+H(замена). - В поле
Найтивведите шаблон, напримеротчёт(найдёт все ячейки со словом "отчёт"). - Для фильтрации используйте формулу:
=ЕСЛИ(ЕЧИСЛО(ПОИСК("gmail"; A2)); "Да"; "Нет")Она вернёт "Да", если в ячейке
A2есть подстрокаgmail.
⚠️ Внимание: ФункцияПОИСКчувствительна к регистру. Чтобы игнорировать регистр, используйтеНАЙТИили преобразуйте текст в верхний регистр:=ПОИСК("GMAIL"; ВЕРХНИЙРЕГ(A2)).
Метод 7: Надстройки и макросы для автоматизации
Если вам регулярно приходится искать сотни значений, ручные методы станут тормозом. В этом случае помогут:
- 🤖 Макросы VBA: напишите скрипт, который будет автоматически фильтровать данные по списку значений из другого листа.
- 📦 Надстройки: например, Kutools for Excel имеет инструмент
Select Specific Cells, который умеет искать по нескольким критериям. - 🔧 Google Apps Script: если работаете в Google Таблицах, можно написать скрипт для поиска по массиву значений.
Пример макроса для поиска и выделения ячеек:
Sub FindMultipleValues()
Dim SearchRange As Range, Cell As Range, i As Long
Dim SearchValues As Variant
' Укажите диапазон поиска и значения для поиска
Set SearchRange = Sheets("Лист1").Range("A1:A1000")
SearchValues = Array("Значение1", "Значение2", "Значение3")
' Очистка предыдущего выделения
Cells.Interior.ColorIndex = 0
' Поиск и выделение
For Each Cell In SearchRange
For i = LBound(SearchValues) To UBound(SearchValues)
If InStr(1, Cell.Value, SearchValues(i), vbTextCompare) > 0 Then
Cell.Interior.Color = RGB(255, 255, 0) ' Жёлтый цвет
Exit For
End If
Next i
Next Cell
End Sub
Чтобы использовать этот макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Измените
Sheets("Лист1").Range("A1:A1000")на ваш диапазон и список значений вSearchValues. - Запустите макрос клавишей
F5.
FAQ: Ответы на частые вопросы
Можно ли искать несколько значений в Google Таблицах?
Да, все методы, кроме Power Query и макросов VBA, работают в Google Таблицах. Для условного форматирования используйте ту же формулу =OR(A2="Значение1", A2="Значение2"). Для фильтрации — Данные → Фильтр → Фильтр по условию → Пользовательский формула и введите:
=REGEXMATCH(A2; "Значение1|Значение2")
Это аналог ИЛИ с поддержкой регулярных выражений.
Как искать значения в разных листах или книгах?
Используйте трёхмерные ссылки или ВПР/ИНДЕКС. Например, чтобы проверить, есть ли значение из Лист2!A1:A10 в Лист1!B2:B100, используйте:
=СУММПРОИЗВ(--(СЧЁТЕСЛИ(Лист2!$A$1:$A$10; Лист1!B2:B100)>0))
Для поиска в другой книге укажите её имя в ссылке: [Книга1.xlsx]Лист1!$A$1.
Почему Excel не находит значения, которые точно есть в таблице?
Причины могут быть следующими:
- 🔍 В ячейках есть непечатаемые символы (пробелы, переносы строк). Используйте
=ПЕЧСИМВ(A2), чтобы их убрать. - 📏 Данные хранятся как текст, а ищете как числа (или наоборот). Проверьте формат ячеек.
- 🔠 Включён режим подстановки (например, в сводных таблицах). Отключите его в настройках.
Как сохранить результаты поиска в отдельный файл?
Способы:
- Используйте расширенный фильтр с опцией
Скопировать результат в другое место(см. Метод 1), затем скопируйте данные в новую книгу. - В Power Query после фильтрации нажмите
Закрыть и загрузить в...и выберитеНовая книга. - Напишите макрос, который создаст новую книгу и скопирует туда отфильтрованные данные:
Workbooks.AddActiveSheet.Range("A1").CurrentRegion.Value = _
Sheets("Лист1").Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Value
Какой метод самый быстрый для таблиц с 100 000+ строк?
По скорости работы методы ранжируются так:
- Power Query — оптимизирован для больших данных, работает почти мгновенно.
- Сводные таблицы — быстрые, но не гибкие для сложных критериев.
- Формулы массива (например,
СЧЁТЕСЛИМН) — тормозят при 50 000+ строк. - Условное форматирование — самое медленное для больших диапазонов.
Для максимальной производительности комбинируйте Power Query с фильтрацией на уровне источника данных (например, импортируйте только нужные столбцы).