Вы пытаетесь отфильтровать данные в Excel по двум и более критериям, но стандартный автофильтр возвращает пустые результаты или игнорирует часть условий? Проблема чаще всего кроется в неправильном применении логических операторов (И/ИЛИ) или синтаксисе формул. Например, если в таблице с продажами нужно выбрать строки, где одновременно выполняются условия "регион = Москва" и "сумма > 50 000", а автофильтр выдает все записи с Москвой (игнорируя сумму) — это классический симптом ошибки в настройке И/ИЛИ.
В 90% случаев выборка по нескольким условиям ломается из-за трех причин: неверная группировка критериев в расширенном фильтре, отсутствие абсолютных ссылок в формулах массива или попытка применить ЕСЛИ вместо ЕСЛИМН для множественных проверок. В этой статье разберем 5 рабочих методов — от базовых фильтров до продвинутых формул и Power Query, — с примерами для Excel 2016–2023 и Microsoft 365. Особое внимание уделим типичным ошибкам, из-за которых выборка "не видит" часть данных.
1. Стандартный фильтр: как применить несколько условий через GUI
Если вам нужно быстро отобрать строки по 2–3 простым критериям (например, "товар = ноутбук" и "цена < 30 000"), начинайте со встроенного фильтра. Этот метод не требует формул, но имеет ограничение: нельзя использовать более 2 условий для одного столбца.
Алгоритм действий:
- Выделите заголовки таблицы (строку с названиями столбцов).
- Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Кликните по стрелке в столбце, по которому нужно фильтровать, и выберите
Текстовые фильтры/Числовые фильтры→Настраиваемый фильтр. - В выпадающем списке слева выберите оператор (
равно,больше,содержити т.д.), справа укажите значение. Для второго условия нажмите кнопкуИ(одновременное выполнение) илиИЛИ(любое из условий).
Пример настройки для выборки строк, где дата позднее 01.01.2026 и статус = "Оплачено":
Столбец "Дата" → Настраиваемый фильтр → "больше" → 01.01.2026
[Добавить условие: И]
Столбец "Статус" → Настраиваемый фильтр → "равно" → "Оплачено"
⚠️ Внимание: Если после применения фильтра часть строк пропадает, проверьте формат данных в ячейках. Например, числа с пробелами ("30 000" вместо "30000") или даты в текстовом формате ("01.01.2026" как строка) не будут распознаны фильтром как числовые значения.
Что делать, если фильтр не находит данные?
Если фильтр не возвращает ожидаемые строки, выполните проверку:
1. Убедитесь, что в настройках региональных стандартов Excel используется та же разделитель целой и дробной части (точка или запятая), что и в ваших данных.
2. Для текстовых значений проверьте наличие скрытых символов (пробелов, неразрывных пробелов, переносов строк). Используйте функцию =ПЕЧСИМВ(A1), чтобы увидеть все символы в ячейке.
3. Если фильтруете по датам, преобразуйте столбец в формат "Дата" через Формат ячеек → Дата.
2. Расширенный фильтр: выборка с выводом в другое место
Расширенный фильтр позволяет сохранять результаты выборки на другом листе или в отдельном диапазоне, а также использовать более 2 условий для одного столбца. Этот метод незаменим, если нужно:
- 📌 Отфильтровать данные по 3+ критериям в одном столбце (например, "город = Москва ИЛИ Санкт-Петербург ИЛИ Казань").
- 📌 Сохранить результаты выборки как отдельную таблицу для дальнейшей обработки.
- 📌 Применить формулы в критериях (например, "сумма > СРЗНАЧ(диапазон)").
Пошаговая инструкция:
- Создайте диапазон условий (критериев) — отдельную таблицу с заголовками, идентичными исходной. Например:
| Город | Сумма | Дата |
|---|---|---|
| Москва | >50000 | >=01.01.2026 |
| Санкт-Петербург | >30000 |
В этом примере будут выбраны строки, где город = Москва и сумма > 50 000 и дата ≥ 01.01.2026, или город = Санкт-Петербург и сумма > 30 000 (дата не важна).
- Выделите исходную таблицу вместе с заголовками.
- Перейдите на вкладку
Данные→Расширенный фильтр. - В поле
Исходный диапазонукажите адрес таблицы с данными (например,$A$1:$D$100). - В поле
Диапазон условийукажите адрес таблицы с критериями (например,$F$1:$H$3). - Отметьте
Скопировать результат в другое местои укажите верхнюю левую ячейку для вывода (например,$J$1).
☑ Заголовки в диапазоне условий полностью совпадают с заголовками исходной таблицы (включая регистр).
☑ В критериях для числовых значений не используются пробелы как разделители тысяч (пишите "50000", а не "50 000").
☑ Диапазон условий не пересекается с исходными данными или областью вывода результатов.
☑ Для пустых критериев в строке (как "Дата" во втором ряду примера) ячейка оставлена пустой, а не содержит пробел.
-->
3. Формулы для выборки: ЕСЛИМН, ИНДЕКС-ПОИСКПОЗ и ФИЛЬТР
Если фильтры не подходят (например, нужно динамически обновлять выборку или использовать сложную логику), применяйте формулы. Рассмотрим три варианта — от простого к продвинутому.
3.1. Функция ЕСЛИМН (Excel 2019 и новее)
Функция =ЕСЛИМН позволяет проверять несколько условий и возвращать значение, если все они истинны. Синтаксис:
=ЕСЛИМН(
[что вернуть если ДА];
[условие1]; [что проверять1]; [значение1];
[условие2]; [что проверять2]; [значение2];
...
)
Пример: вернуть "Да" для строк, где регион = "Москва" и сумма > 50 000:
=ЕСЛИМН("Да"; B2="Москва"; B2="Москва"; C2>50000; C2>50000; "")
3.2. Комбинация ИНДЕКС + ПОИСКПОЗ для динамической выборки
Этот метод подходит для извлечения данных из таблицы по нескольким критериям. Например, найти сумму продаж для конкретного товара в определенном регионе:
=ИНДЕКС(
диапазон_с_данными;
ПОИСКПОЗ(1; (диапазон_регионов=G1)*(диапазон_товаров=G2); 0);
номер_столбца_с_суммой
)
Где G1 — ячейка с регионом, G2 — с названием товара. Важно: это формула массива — вводите ее с Ctrl+Shift+Enter в старых версиях Excel.
3.3. Функция ФИЛЬТР (Excel 365 и 2021)
Самый мощный инструмент для выборки — =ФИЛЬТР. Она возвращает динамически обновляемый массив строк, соответствующих условиям. Пример:
=ФИЛЬТР(
A2:D100;
(B2:B100="Москва") (C2:C100>50000) (D2:D100<>"Отменено");
"Нет данных"
)
Эта формула вернет все строки из диапазона A2:D100, где одновременно:
- 📍 Столбец B = "Москва",
- 💰 Столбец C > 50 000,
- ✅ Столбец D ≠ "Отменено".
Стандартный фильтр
Расширенный фильтр
Формулы (ЕСЛИМН, ИНДЕКС-ПОИСКПОЗ)
Функция ФИЛЬТР (Excel 365)
Сводные таблицы
-->
4. Power Query: выборка для больших данных
Если работаете с таблицами на 100 000+ строк, стандартные фильтры и формулы будут тормозить. В этом случае используйте Power Query (вкладка Данные → Получить данные). Преимущества метода:
- 🚀 Обработка миллионов строк без зависаний.
- 🔄 Возможность сохранять шаги выборки и обновлять данные одним кликом.
- 🔧 Гибкие условия с регулярными выражениями, группировками и т.д.
Инструкция для выборки по нескольким условиям:
- Выделите исходную таблицу и нажмите
Данные→Из таблицы/диапазона(в Excel 2016+). - В открывшемся редакторе Power Query кликните по стрелке в заголовке столбца, по которому нужно фильтровать.
- Выберите
Текстовые фильтры/Числовые фильтры→ укажите условие (например, "равно" → "Москва"). - Для добавления второго условия повторите шаг 3 для другого столбца.
- Нажмите
Закрыть и загрузить, чтобы вернуть отфильтрованные данные на новый лист.
Чтобы объединить условия через И/ИЛИ, используйте:
- 🔹
И: примените фильтры последовательно к разным столбцам. - 🔹
ИЛИ: в одном столбце выберитеТекстовые фильтры→Настраиваемый фильтр→ укажите несколько значений черезИЛИ.
После настройки фильтров в редакторе Power Query нажмите Файл → Сохранить. Все действия запишутся в запрос, и при обновлении исходных данных (кнопка Обновить все на вкладке Данные) выборка применится автоматически. Это избавляет от необходимости настраивать фильтры заново.
-->
5. Сводные таблицы для аналитической выборки
Если цель выборки — не просто отфильтровать данные, а проанализировать их (например, посчитать сумму продаж по регионам с учетом нескольких условий), используйте сводные таблицы. Они позволяют:
- 📊 Группировать данные по нескольким полям (например, "Регион" + "Категория товара").
- 🔍 Применять фильтры к группам (например, показать только регионы с продажами > 100 000).
- 📈 Строить динамические графики на основе отфильтрованных данных.
Алгоритм создания сводной таблицы с выборкой:
- Выделите исходную таблицу (включая заголовки).
- Перейдите на вкладку
Вставка→Сводная таблица. - В открывшемся окне укажите, куда вывести таблицу (новый лист или текущий).
- В панели
Поля сводной таблицыперетащите: - Поля для группировки (например, "Регион", "Категория") в область
Строки. - Поле для фильтрации (например, "Дата") в область
Фильтры. - Поле для расчетов (например, "Сумма") в область
Значения.
Фильтры) и настройте условия (например, "даты после 01.01.2026").Чтобы добавить второе условие (например, фильтр по сумме), перетащите поле "Сумма" в область Фильтры, затем настройте в нем пороговое значение через Фильтр по значению.
⚠️ Внимание: Если в сводной таблице не отображаются ожидаемые данные, проверьте:
- 🔹 Формат данных в исходной таблице (например, даты должны быть в формате "Дата", а не "Текст").
- 🔹 Наличие пустых строк или столбцов в исходном диапазоне — они могут сбивать группировку.
- 🔹 Настройки региональных параметров (разделитель целой и дробной части должен совпадать в данных и настройках Excel).
6. Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при выборке по нескольким условиям. Вот топ-5 проблем и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Фильтр не находит строки, которые есть в данных | Несовпадение форматов (например, число хранится как текст) | Преобразуйте данные через Текст по столбцам или функцию =ЗНАЧЕН() |
| Расширенный фильтр возвращает пустой результат | В диапазоне условий есть лишние пробелы или несовпадение заголовков | Проверьте точные названия столбцов и используйте =СЖПРОБЕЛЫ() для удаления пробелов |
| Формула массива (#ЗНАЧ!) не работает | Диапазоны в формуле разного размера | Убедитесь, что все диапазоны в ИНДЕКС-ПОИСКПОЗ имеют одинаковое количество строк/столбцов |
| Функция ФИЛЬТР возвращает #ИМЯ? | Неподдерживаемая версия Excel (до 2021) | Используйте ЕСЛИМН или ИНДЕКС-ПОИСКПОЗ вместо ФИЛЬТР |
| Power Query не обновляет данные | Отключено автоматическое обновление или изменен источник | Нажмите Обновить все на вкладке Данные или проверьте путь к источнику |
Всегда проверяйте формат данных в исходной таблице перед применением фильтров или формул. Числа должны быть числами (а не текстом), даты — датами (а не строками), а текстовые значения не должны содержать скрытых символов (пробелов, табуляций). Это решает 80% проблем с "неработающей" выборкой.
-->
FAQ: Ответы на частые вопросы
Можно ли сделать выборку по условиям из разных листов?
Да, но метод зависит от задачи:
- 📄 Для фильтра: сначала объедините данные с разных листов в одну таблицу (например, через Power Query), затем применяйте фильтры.
- 📄 Для формул: используйте трехмерные ссылки (например,
=ЕСЛИМН("Да"; Лист2!B2="Москва"; Лист1!C2>50000)), но это неудобно для больших данных.
Лучшее решение — Power Query: импортируйте данные с обоих листов, объедините их (Объединить запросы), затем фильтруйте.
Как сделать выборку по частичному совпадению текста (например, "Моск*" для "Москва", "Московская обл.")?
Используйте подстановочные знаки в фильтрах или функциях:
- 🔍 В стандартном фильтре: выберите "Текст содержит" и введите
Моск*. - 🔍 В формулах: применяйте
=ПОИСК("Моск";A2)или=НАЙТИ("Моск";A2)(регистрозависимый поиск). - 🔍 В Power Query: используйте фильтр "Текст содержит" или напишите условие на языке M:
= Text.Contains([Столбец], "Моск").
Для регулярных выражений в Power Query используйте Text.Select или Text.Matches.
Почему при копировании отфильтрованных данных в другую таблицу пропадают строки?
Это происходит из-за:
- Скрытых строк: фильтр скрывает строки, но не удаляет их. При копировании видимых ячеек (
Ctrl+C) скрытые данные игнорируются. Решение: используйте расширенный фильтр с выводом в другое место илиСпециальная вставка→Значения. - Ошибок в диапазоне: если в отфильтрованных данных есть ошибки (#Н/Д, #ЗНАЧ!), они могут блокировать копирование. Проверьте на наличие ошибок функцией
=ЕОШИБКА().
Как сделать выборку по условию "между двумя датами"?
Используйте комбинацию двух условий с оператором И:
- 📅 В стандартном фильтре: примените настраиваемый фильтр с условиями "больше или равно" (первая дата) и "меньше или равно" (вторая дата).
- 📅 В формулах:
=ЕСЛИМН("Да"; C2>=ДАТА(2026;1;1); C2>=ДАТА(2026;1;1); C2<=ДАТА(2026;12;31); C2<=ДАТА(2026;12;31); "")
Где C2 — ячейка с датой, а ДАТА(год;месяц;день) — границы диапазона.
Можно ли автоматизировать выборку по условиям с помощью VBA?
Да, вот пример макроса для фильтрации таблицы по двум условиям (например, "Регион = Москва" и "Сумма > 50000"):
Sub FilterByConditions()
Dim ws As Worksheet
Set ws = ActiveSheet
With ws.Range("A1").CurrentRegion ' Предполагаем, что таблица начинается с A1
.AutoFilter Field:=2, Criteria1:="Москва" ' Столбец B (Регион)
.AutoFilter Field:=3, Criteria1:=">50000" ' Столбец C (Сумма)
End With
End Sub
Чтобы запустить макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в модуль (
Insert→Module). - Запустите макрос через
F5или кнопку на листе.
Для динамических условий замените жестко прописанные значения ("Москва", 50000) на ссылки на ячейки с параметрами.