При работе с большими таблицами в Microsoft Excel часто требуется извлечь строки, содержащие конкретное слово или фразу. Например, вы можете искать все заказы с пометкой «срочно», клиентов из определенного города или товары с конкретной характеристикой. Если стандартный поиск (Ctrl+F) просто показывает местоположение слова, то выборка данных позволяет создать отдельный отфильтрованный список — без ручного копирования каждой строки.
В этой статье разберем 5 рабочих методов: от базовых фильтров до автоматизированных решений с Power Query и VBA. Вы узнаете, как сделать выборку по частичному или полному совпадению, учитывая регистр, а также как сохранить результаты в новую таблицу. Все инструкции адаптированы для Excel 2016–2023 и Microsoft 365.
1. Быстрая выборка с помощью стандартного фильтра
Самый простой способ отфильтровать данные по ключевому слову — использовать встроенный автофильтр. Он подходит для одноразовых задач и не требует знания формул. Рассмотрим пошагово:
1. Выделите заголовок столбца, по которому будет вестись поиск (например, столбец B с названиями товаров).
2. Перейдите на вкладку Данные → Фильтр (или нажмите Ctrl+Shift+L).
3. Кликните по стрелке фильтра в заголовке столбца и выберите Текстовые фильтры → Содержит....
4. В появившемся окне введите искомое слово (например, «ноутбук») и нажмите ОК.
Excel скрывает все строки, кроме тех, что содержат указанное слово. Чтобы скопировать отфильтрованные данные в новую таблицу:
- 📋 Выделите видимые строки (исключая заголовки).
- 🖱️ Кликните правой кнопкой →
Копировать. - 📄 Вставьте на новый лист (
Ctrl+Nдля создания).
⚠️ Внимание: Фильтр учитывает регистр только в Excel 365 с включенной настройкой Файл → Параметры → Дополнительно → Учитывать регистр при сортировке и поиске. В остальных версиях «Ноутбук» и «ноутбук» будут восприняты как одинаковые слова.
2. Формулы для динамической выборки (INDEX, FILTER, AGGREGATE)
Фильтры скрывают данные, но не создают новый список. Чтобы автоматически извлечь строки с искомым словом в отдельную таблицу, используйте формулы. Рассмотрим три варианта:
2.1. Функция FILTER (Excel 365 и 2021)
Самый современный способ — функция =FILTER(). Она возвращает динамический массив строк, соответствующих условию:
=FILTER(A2:D100; ISNUMBER(SEARCH("слово"; B2:B100)))
Где:
A2:D100— диапазон исходных данных (включая заголовки).B2:B100— столбец, в котором ищем слово.SEARCH— ищет слово без учета регистра (замените наFINDдля учета регистра).
2.2. Комбинация INDEX + AGGREGATE (для старых версий)
Если у вас Excel 2016 или старше, используйте:
=INDEX($A$2:$D$100; AGGREGATE(15; 6; ROW($A$2:$A$100)-1/ISNUMBER(SEARCH("слово"; $B$2:$B$100)); ROW(A1)); COLUMN(A1))
Эта формула массива требует подтверждения Ctrl+Shift+Enter (в новых версиях вводится как обычная).
| Метод | Подходит для | Учитывает регистр | Динамический результат |
|---|---|---|---|
FILTER |
Excel 365/2021 | Нет (с SEARCH) |
Да |
INDEX+AGGREGATE |
Excel 2010–2019 | Нет | Нет (требует Ctrl+Shift+Enter) |
| Автофильтр | Все версии | Опционально | Нет |
Как сделать выборку по нескольким словам одновременно?
Используйте формулу с SEARCH для каждого слова, объединив условия через * (умножение):
=FILTER(A2:D100; ISNUMBER(SEARCH("слово1"; B2:B100)) * ISNUMBER(SEARCH("слово2"; C2:C100)))
Эта формула вернет строки, где в столбце B есть «слово1», а в столбце C — «слово2».
3. Power Query: профессиональная выборка с сохранением
Power Query (или Get & Transform в Excel 2016+) — мощный инструмент для обработки данных, позволяющий создавать повторяемые выборки. Преимущества метода:
- 🔄 Автоматическое обновление при изменении исходных данных.
- 📊 Возможность объединять данные из нескольких источников.
- 🛠️ Сохранение шагов обработки для повторного использования.
Инструкция по созданию выборки:
- Выделите исходную таблицу и нажмите
Данные → Из таблицы/диапазона(в Excel 2016 —Данные → Получение данных → Из таблицы/диапазона). - В открывшемся редакторе Power Query выберите столбец для фильтрации →
Главная → Фильтр → Текстовые фильтры → Содержит.... - Введите искомое слово и нажмите
ОК. - Нажмите
Главная → Закрыть и загрузить, чтобы сохранить результаты на новый лист.
Теперь при обновлении исходных данных (Данные → Обновить все) выборка будет пересчитываться автоматически.
4. Макросы VBA для автоматизации выборки
Если вам нужно регулярно выполнять выборку по сложным критериям, напишите VBA-макрос. Например, этот код копирует строки с искомым словом на новый лист:
Sub ВыборкаПоСлову()
Dim wsSource As Worksheet, wsResult As Worksheet
Dim rng As Range, cell As Range, i As Long
Dim searchWord As String, lastRow As Long
searchWord = InputBox("Введите слово для поиска:", "Выборка данных")
If searchWord = "" Then Exit Sub
Set wsSource = ActiveSheet
lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
Set rng = wsSource.Range("A1:D" & lastRow) ' Диапазон данных
' Создаем новый лист для результатов
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Результаты").Delete
Application.DisplayAlerts = True
On Error GoTo 0
Set wsResult = Sheets.Add(After:=Sheets(Sheets.Count))
wsResult.Name = "Результаты"
' Копируем заголовки
wsSource.Rows(1).Copy wsResult.Rows(1)
' Поиск и копирование строк
i = 2
For Each cell In wsSource.Range("B2:B" & lastRow) ' Столбец B
If InStr(1, cell.Value, searchWord, vbTextCompare) > 0 Then
wsSource.Rows(cell.Row).Copy wsResult.Rows(i)
i = i + 1
End If
Next cell
MsgBox "Выборка завершена! Найдено " & i - 2 & " строк.", vbInformation
End Sub
Чтобы использовать макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в модуль (
Insert → Module). - Запустите макрос через
F5или кнопку на панели.
⚠️ Внимание: Макрос ищет слово без учета регистра (vbTextCompare). Чтобы учитывать регистр, заменитеInStr(1, cell.Value, searchWord, vbTextCompare)наInStr(1, cell.Value, searchWord, vbBinaryCompare).
🔹 Включите макросы в Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы (временное решение).
🔹 Сохраните файл как .xlsm (с поддержкой макросов).
🔹 Проверьте, что в столбце B нет объединенных ячеек — они могут вызвать ошибку.
🔹 Запускайте макрос на копии данных, если работаете с важной информацией.-->
5. Выборка с учетом регистра и специальных символов
По умолчанию SEARCH и автофильтр игнорируют регистр. Если нужно найти точное совпадение (например, «iPhone», но не «iphone»), используйте:
- 🔍 Функцию
FINDвместоSEARCHв формулах:=FILTER(A2:D100; NOT(ISERROR(FIND("iPhone"; B2:B100)))) - 📝 В Power Query: выберите
Трансформировать → Формат → Регистр → Как естьперед фильтрацией. - 🖥️ В макросах: замените
vbTextCompareнаvbBinaryCompare(см. раздел 4).
Для поиска строк с специальными символами (например, «#», «@») экранируйте их в формулах с помощью ~:
=FILTER(A2:D100; ISNUMBER(SEARCH("~#"; B2:B100)))
6. Ошибки и решения при выборке данных
Даже простые операции могут давать сбои. Рассмотрим типичные проблемы и способы их устранения:
| Проблема | Вероятная причина | Решение |
|---|---|---|
| Фильтр не находит слово, хотя оно есть в данных | Лишние пробелы или непечатаемые символы | Используйте =TRIM(B2) для очистки данных |
Формула FILTER возвращает #CALC! |
Нет совпадений или ошибка в диапазоне | Проверьте синтаксис и добавьте обработку ошибок: =IFERROR(FILTER(...); "Нет данных") |
| Макрос копирует пустые строки | Диапазон lastRow определен неверно |
Замените End(xlUp) на Cells(Rows.Count, 1).End(xlUp).Row |
Если выборка работает неправильно, выполните диагностику:
- Проверьте формат ячеек: текстовые данные не должны быть в формате
ОбщийилиЧисловой. - Убедитесь, что в столбце нет скрытых символов (нажмите
Ctrl+Hи замените^lили^pна ничего). - Для Power Query обновите предварительный просмотр после каждого шага (
Главная → Обновить просмотр).
FAQ: Ответы на частые вопросы
Можно ли сделать выборку по части слова (например, найти все строки, где есть "ноут")?
Да, все описанные методы поддерживают частичное совпадение. Например, формула =FILTER(A2:D100; ISNUMBER(SEARCH("ноут"; B2:B100))) найдет «ноутбук», «ноутбуки», «ультрабук» и т.д. Чтобы искать только целые слова, используйте регулярные выражения в Power Query или VBA.
Как сохранить отфильтрованные данные в отдельный файл?
1. Выполните выборку любым методом (например, через автофильтр или FILTER).
2. Скопируйте результаты на новый лист.
3. Нажмите Файл → Сохранить как и выберите формат .xlsx или .csv.
Дизайн → Экспорт → Экспортировать в файл.
Почему формула FILTER не работает в моем Excel?
Функция FILTER доступна только в Excel 365 и Excel 2021. Для старых версий используйте альтернативы:
- Комбинацию
INDEX+AGGREGATE(см. раздел 2.2). - Пользовательскую функцию на VBA (см. раздел 4).
Проверьте версию Excel в Файл → Учетная запись → О программе Excel.
Как сделать выборку по слову в гугл-таблицах?
В Google Sheets используйте аналогичные методы:
- Фильтр:
Данные → Создать фильтр. - Формула:
=FILTER(A2:D100; REGEXMATCH(B2:B100; "слово")). - App Script (аналог VBA):
Tools → Script Editor.
Отличия от Excel:
SEARCHзаменяется наREGEXMATCH(поддерживает регулярные выражения).- Нет Power Query, но есть
QUERYдля SQL-подобных запросов.