Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных.hether вы ведете бухгалтерский учет, обрабатываете логистические отчеты или анализируете продажи, умение быстро отфильтровать записи по периодам экономит часы ручной работы. Но стандартный автофильтр часто сбивает с толку: почему Excel не показывает все даты? Как выделить только рабочие дни? Или почему фильтр игнорирует время в ячейках с датой?
Эта статья раскроет все способы фильтрации по дате — от базовых до продвинутых, включая малоизвестные приемы с формулами и Power Query. Вы научитесь не только применять фильтры, но и автоматизировать их для регулярных отчетов. А еще разберем типичные ошибки, из-за которых Excel "не видит" ваши даты.
Перед тем как погрузиться в инструкции, проверьте формат своих данных. Частая проблема: ячейки с датами на самом деле содержат текст (например, "01.05.2026" вместо настоящей даты). Чтобы это проверить, выделите столбец и посмотрите на выравнивание: даты по умолчанию выравниваются по правому краю, а текст — по левому. Если формат неправильный, используйте функцию =ДАТАЗНАЧ() или инструмент "Текст по столбцам" на вкладке Данные.
1. Базовый автофильтр: как включить и настроить
Самый простой способ отбора — встроенный автофильтр. Он подходит для 90% задач и работает во всех версиях Excel от 2010 до 2023. Чтобы его активировать:
- Выделите заголовок столбца с датами (обязательно с названием!).
- На вкладке
Данныенажмите кнопкуФильтр(или используйте горячие клавишиCtrl+Shift+L). - Рядом с названием столбца появится стрелка фильтра — кликните на нее.
В выпадающем меню вы увидите несколько вариантов:
- 📅 Фильтры по дате — здесь можно выбрать готовые периоды: "Завтра", "На этой неделе", "В прошлом месяце" и т.д.
- 🔍 Текстовые фильтры (да, они работают и с датами!) — позволяют задать условия типа "равно", "больше", "между".
- ✅ Выделение по цвету — если даты подсвечены условным форматированием.
- 📊 Числовые фильтры — полезны, когда даты хранятся как числа (Excel так их и воспринимает внутренне).
Например, чтобы отобразить только записи за текущий квартал, выберите: Фильтры по дате → В этом квартале. А для произвольного периода (скажем, с 15 марта по 30 апреля) используйте Фильтры по дате → Между... и укажите границы в календаре.
2. Расширенный фильтр: для сложных условий
Когда нужно отфильтровать данные по нескольким критериям одновременно (например, даты за прошлый год и сумма продаж больше 10 000), на помощь приходит расширенный фильтр. Он сложнее автофильтра, но дает полный контроль.
Алгоритм действий:
- Создайте диапазон условий — скопируйте заголовки столбцов, которые будете фильтровать, в отдельную область листа. Например:
| Дата | Сумма |
|---|---|
| >=01.01.2023 | >10000 |
| <=31.12.2023 |
Здесь мы ищем записи за 2023 год с суммой больше 10 000.
- Перейдите на вкладку
Данные → Сортировка и фильтр → Расширенный фильтр. - В поле "Исходный диапазон" укажите всю таблицу с данными (включая заголовки).
- В поле "Диапазон условий" выделите созданную вами таблицу с критериями.
- Выберите, куда выводить результат: "Фильтровать список на месте" или "Скопировать результат в другое место" (указав ячейку для вывода).
Преимущество этого метода — возможность комбинировать условия по разным столбцам. Например, можно добавить третий критерий по региону или менеджеру.
Как фильтровать по дате ИЛИ другому условию?
В диапазоне условий разместите критерии в одной строке для "И", и в разных строках для "ИЛИ". Например:
| Дата | Регион |
|---|---|
| >=01.01.2026 | Москва |
| >=01.01.2026 | Санкт-Петербург |
Это найдет записи за 2026 год ИЛИ из Москвы, ИЛИ из Санкт-Петербурга.
3. Фильтрация по дате с помощью формул
Иногда стандартные фильтры не справляются — например, когда нужно отобрать даты по нестандартным условиям (только рабочие дни, только пятницы, или даты с определенным днем недели). Здесь помогут формулы массива или функция ФИЛЬТР() (в Excel 365 и 2021).
Рассмотрим три сценария:
3.1. Фильтр по дню недели
Допустим, вам нужны только понедельники из столбца A2:A100. Создайте вспомогательный столбец с формулой:
=ЕСЛИ(ДЕНЬНЕД(A2;2)=1; "Пн"; "")
Затем отфильтруйте по значению "Пн". Или используйте ФИЛЬТР() (если она доступна):
=ФИЛЬТР(A2:B100; ДЕНЬНЕД(A2:A100;2)=1)
3.2. Фильтр по кварталу или полугодию
Чтобы отобрать даты за 2-й квартал, используйте:
=ФИЛЬТР(A2:B100; (МЕСЯЦ(A2:A100)>=4)*(МЕСЯЦ(A2:A100)<=6))
3.3. Фильтр "последних N дней"
Для динамического отбора записей за последние 30 дней:
=ФИЛЬТР(A2:B100; A2:A100>=СЕГОДНЯ()-30)
Эти формулы автоматически обновляются при изменении данных — в отличие от статичных фильтров.
4. Фильтрация по дате в сводных таблицах
Сводные таблицы — мощный инструмент для анализа временных данных. Они позволяют группировать даты по годам, кварталам, месяцам или дням, а также применять срезы (slicers) для интерактивной фильтрации.
Как настроить:
- Выделите исходные данные и создайте сводную таблицу (
Вставка → Сводная таблица). - Перетащите поле с датой в область
СтрокиилиСтолбцы. - Щелкните правой кнопкой по любой дате в сводной таблице и выберите
Группировать. - Укажите нужные интервалы: дни, месяцы, кварталы или годы.
Теперь вы можете развернуть/свернуть группы или добавить срез для удобной фильтрации. Например, чтобы анализировать продажи по месяцам:
- 📅 Сгруппируйте даты по месяцам.
- 💰 Добавьте сумму продаж в область
Значения. - 🎯 Вставьте срез по месяцам (
Анализ сводной таблицы → Вставить срез).
Срез можно связать с несколькими сводными таблицами на листе — это позволит фильтровать все отчеты одновременно одним кликом.
5. Power Query: фильтрация дат при импорте
Если вы загружаете данные из внешних источников (баз данных, CSV, веб), Power Query поможет отфильтровать их еще на этапе импорта. Это ускорит дальнейшую работу с файлом.
Инструкция:
- Импортируйте данные через
Данные → Получить данные. - В открывшемся редакторе Power Query выделите столбец с датами.
- На вкладке
ГлавнаянажмитеФильтры по датеи выберите нужный критерий (аналогично автофильтру). - Для сложных условий используйте
Дополнительные фильтры → Фильтры по дате/времени. - После настройки нажмите
Закрыть и загрузить.
Преимущество Power Query:
- 🔄 Фильтры применяются один раз при загрузке и не замедляют файл.
- 📥 Можно объединять фильтрацию с другими преобразованиями (замена значений, разделение столбцов).
- 🔗 Легко обновлять данные одним кликом (
Данные → Обновить все).
Выбрать источник данных
Проверить формат столбца с датами
Применить фильтры по дате
Удалить ненужные столбцы
Загрузить данные на новый лист-->
6. Типичные ошибки и как их избежать
Даже опытные пользователи сталкиваются с проблемами при фильтрации дат. Вот самые распространенные:
⚠️ Внимание: Если после применения фильтра Excel показывает пустой список, проверьте формат ячеек. Часто даты сохранены как текст (например, после импорта из CSV). Используйте функцию=ДАТАЗНАЧ()или преобразуйте столбец черезДанные → Текст по столбцам.
| Проблема | Причина | Решение |
|---|---|---|
| Фильтр не показывает все даты | Дата сохранена как текст или в нестандартном формате (например, "01-янв-2026") | Преобразуйте в настоящий формат даты с помощью =ДАТАЗНАЧ() или "Текст по столбцам" |
| Фильтр "между" не работает | В ячейках есть время (например, "01.05.2026 00:00"), а вы указываете только дату | Используйте полный формат с временем или применяйте =ЦЕЛОЕ() для отсечения времени |
| Расширенный фильтр возвращает #ЗНАЧ! | Несовпадение заголовков в диапазоне условий и исходных данных | Проверьте названия столбцов — они должны совпадать полностью (включая регистр) |
| Фильтр по дню недели работает неправильно | Функция ДЕНЬНЕД возвращает 1 для воскресенья (в некоторых локалях) | Используйте второй аргумент: =ДЕНЬНЕД(A2;2) (1=понедельник) |
Еще одна частая ошибка — использование относительных ссылок в диапазоне условий для расширенного фильтра. Всегда фиксируйте диапазоны абсолютными ссылками (например, $A$1:$B$2), иначе при копировании формул фильтр сломается.
⚠️ Внимание: Если вы фильтруете большие массивы данных (более 100 000 строк), отключите автоматический пересчет формул (Формулы → Параметры вычислений → Вручную). Это ускорит работу фильтра в 5-10 раз.
7. Автоматизация: макросы для фильтрации по дате
Если вам приходится применять одни и те же фильтры регулярно, имеет смысл автоматизировать процесс с помощью VBA-макросов. Например, этот код фильтрует данные за текущий месяц:
Sub FilterCurrentMonth()
Dim ws As Worksheet
Dim rng As Range
Dim lastRow As Long
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Set rng = ws.Range("A1:D" & lastRow) ' Диапазон с данными
' Удаляем старые фильтры
If ws.AutoFilterMode Then ws.AutoFilterMode = False
' Применяем фильтр по текущему месяцу
rng.AutoFilter Field:=1, Criteria1:=">= "& DateSerial(Year(Date), Month(Date), 1), _
Operator:=xlAnd, Criteria2:="<= "& DateSerial(Year(Date), Month(Date) + 1, 0)
End Sub
Чтобы использовать этот макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Закройте редактор и назначьте макросу сочетание клавиш или кнопку на листе.
Для более сложных сценариев (например, фильтрация по нескольким листам или книгам) можно модифицировать код, добавив циклы и условия. Главное преимущество макросов — они экономят время при повторяющихся задачах.
FAQ: Ответы на частые вопросы
Можно ли отфильтровать даты по времени (например, только утренние записи)?
Да, но нужно учитывать, что Excel хранит даты и время как дробные числа (целая часть — дата, дробная — время). Чтобы отфильтровать, например, записи с 9:00 до 12:00:
- Добавьте вспомогательный столбец с формулой
=ВРЕМЯЧАС(A2)(извлечет час из ячейки). - Примените автофильтр к этому столбцу и выберите значения от 9 до 11.
Или используйте расширенный фильтр с условием:
=И(ВРЕМЯЗНАЧ(A2)>=ВРЕМЯ(9;0;0); ВРЕМЯЗНАЧ(A2)<=ВРЕМЯ(12;0;0))
Почему фильтр по дате не показывает все записи за год, хотя они есть?
Вероятнее всего, в ваших данных есть "мусорные" значения: пустые ячейки, текст вместо дат или даты с ошибками (например, 31 февраля). Чтобы это проверить:
- Сортируйте столбец с датами по возрастанию — некорректные значения окажутся в начале или конце.
- Используйте условное форматирование с правилом
=ЕОШ(ДАТАЗНАЧ(A1)), чтобы подсветить проблемные ячейки.
Также убедитесь, что в настройках Excel установлен правильный региональный формат даты (Файл → Параметры → Язык → Дополнительные параметры региональных стандартов).
Как отфильтровать даты, исключая выходные?
Есть три способа:
- Вспомогательный столбец: добавьте формулу
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A2;2)>5); "Выходной"; "Рабочий")и отфильтруйте по "Рабочий". - Расширенный фильтр: создайте диапазон условий с формулой
=ДЕНЬНЕД(A2;2)<=5. - Power Query: добавьте столбец с днем недели и отфильтруйте его по значениям 1-5 (понедельник-пятница).
Для Excel 365 можно использовать ФИЛЬТР с ДЕНЬНЕД:
=ФИЛЬТР(A2:B100; ДЕНЬНЕД(A2:A100;2)<=5)
Можно ли сохранить фильтр, чтобы не настраивать его каждый раз?
Да, есть несколько способов:
- 📊 Сводные таблицы: они сохраняют настройки фильтров и срезов даже после закрытия файла.
- 📝 Шаблоны: сохраните файл как шаблон (
.xltx) с уже настроенными фильтрами. - 🤖 Макросы: запишите последовательность действий для применения фильтра и назначьте ее на кнопку.
- 🔗 Power Query: все преобразования (включая фильтры) сохраняются в запросе и применяются при обновлении.
Для автофильтра, к сожалению, нет встроенного способа сохранить настройки — его придется настраивать заново при каждом открытии файла.
Как отфильтровать даты по нестандартному периоду (например, финансовый год с апреля по март)?
Используйте расширенный фильтр или формулы с учетом смещения. Например, для финансового года 2023/24 (с 01.04.2023 по 31.03.2026):
- Создайте диапазон условий:
| Дата |
|---|
| >=01.04.2023 |
| <=31.03.2026 |
Или используйте формулу:
=ФИЛЬТР(A2:B100; (A2:A100>=ДАТА(2023;4;1))*(A2:A100<=ДАТА(2026;3;31)))
Для динамического финансового года (текущий месяц ±3 месяца) можно использовать:
=ФИЛЬТР(A2:B100;
ИЛИ(
И(МЕСЯЦ(A2:A100)>=4; ГОД(A2:A100)=ГОД(СЕГОДНЯ()));
И(МЕСЯЦ(A2:A100)<=3; ГОД(A2:A100)=ГОД(СЕГОДНЯ())-1)
)
)