Работа с датами в Microsoft Excel — одна из самых востребованных задач среди аналитиков, бухгалтеров и менеджеров. Но если отсортировать данные по месяцам или дням можно интуитивно, то фильтрация по годам часто вызывает вопросы. Почему? Потому что Excel воспринимает даты как числа, а годы — как часть этих чисел. Без правильного подхода вы рискуете получить в фильтре сотни уникальных значений вместо лаконичного списка лет.
В этой статье разберём 5 рабочих методов, как отфильтровать данные по годам — от базового автофильтра до продвинутых инструментов вроде Power Query и VBA. Каждый способ проиллюстрирован скриншотами (в текстовом формате) и снабжён предупреждениями о типичных ошибках. Например, знали ли вы, что при использовании функции ГОД() в сводной таблице можно случайно потерять исходные даты? Или что автофильтр не умеет группировать годы автоматически? Эти и другие нюансы — дальше.
Для наглядности будем работать с таблицей продаж за 2020–2026 годы, где в колонке A указаны даты в формате ДД.ММ.ГГГГ, а в колонке B — суммы сделок. Все примеры актуальны для Excel 2016–2023 и Microsoft 365 (включая онлайн-версию). Если у вас более старая версия, некоторые функции могут отсутствовать — об этом мы тоже упомянем.
1. Автофильтр: быстрый способ для небольших таблиц
Самый простой метод — использовать встроенный автофильтр. Он подходит для таблиц до 10 000 строк и не требует знания формул. Вот как это работает:
Шаг 1. Выделите заголовок таблицы (например, ячейку A1 с названием колонки "Дата") и нажмите Ctrl+Shift+L или перейдите на вкладку Данные → Фильтр. В колонке с датами появится кнопка фильтра (☰).
Шаг 2. Кликните по кнопке фильтра и выберите Фильтры по дате → Группировка по годам. Excel автоматически сгруппирует все даты по годам и покажет список доступных лет. Остаётся только поставить галочки напротив нужных.
⚠️ Внимание: Автофильтр группирует годы только визуально. Если вы скопируете отфильтрованные данные в другую таблицу, годы останутся в исходном формате (например, "05.03.2023", а не просто "2023"). Чтобы извлечь только год, используйте функцию =ГОД(A2) в отдельном столбце.
- ✅ Плюсы: быстро, не требует формул, подходит для новичков.
- ❌ Минусы: не работает с текстом, не сохраняет группировку при копировании, может тормозить на больших таблицах.
2. Функция ГОД(): извлекаем год в отдельный столбец
Если вам нужно не просто отфильтровать данные, а выделить год как отдельное значение (например, для дальнейшего анализа), используйте функцию ГОД(). Она преобразует дату в формат "2023", "2026" и т. д.
Шаг 1. В пустой столбец (например, C) введите формулу:
=ГОД(A2)
и растяните её на все строки таблицы.
Шаг 2. Теперь примените автофильтр к новому столбцу C. В фильтре появятся только уникальные годы — выберите нужные и скопируйте отфильтрованные данные.
⚠️ Внимание: Если в исходной колонке есть пустые ячейки или текстовые значения (например, "Нет данных"), функция ГОД() вернёт ошибку #ЗНАЧ!. Чтобы избежать этого, оберните формулу в проверку:
=ЕСЛИОШИБКА(ГОД(A2); "")
Как проверить формат ячеек с датами?
Выделите колонку с датами, нажмите Ctrl+1 (или правая кнопка → Формат ячеек). Во вкладке Число должен быть выбран формат Дата. Если там указан Текстовый или Общий, преобразование не сработает.
Этот метод удобен, если вам нужно сохранить годы как отдельные данные для сводных таблиц или графиков. Например, так можно построить диаграмму продаж по годам без привязки к конкретным датам.
3. Сводная таблица: группировка и анализ по годам
Сводные таблицы — мощный инструмент для работы с датами. Они позволяют не только фильтровать данные по годам, но и автоматически группировать их, строить иерархии (год → квартал → месяц) и рассчитывать итоги.
Шаг 1. Выделите исходную таблицу (включая заголовки) и нажмите Вставка → Сводная таблица. В новом окне выберите, куда поместить отчёт (например, на новый лист).
Шаг 2. В панели Поля сводной таблицы перетащите колонку с датами в область Строки, а колонку с суммами — в область Значения.
Шаг 3. Кликните правой кнопкой по любой дате в сводной таблице и выберите Группировка → Годы. Excel автоматически сгруппирует данные.
| Действие | Результат | Примечание |
|---|---|---|
| Группировка по годам | Строки "2020", "2021" и т. д. | Можно добавить вложенную группировку по кварталам |
| Фильтр по годам | Кнопка фильтра в заголовке строк | Работает только внутри сводной таблицы |
| Добавление вычисляемого поля | Новый столбец с формулой | Например, =ГОД(Дата)/1000 для нормировки |
⚠️ Внимание: Если вы обновите исходные данные, сводную таблицу нужно пересчитать вручную (кликните по ней правой кнопкой → Обновить). Иначе новые строки не попадут в фильтр.
Критическая особенность: при группировке по годам в сводной таблице исходные даты заменяются на метки групп (например, "2023"). Если вам нужно сохранить оригинальные даты, используйте метод с функцией ГОД() в отдельном столбце.
4. Power Query: продвинутая фильтрация для больших данных
Power Query (или Get & Transform в новых версиях Excel) — инструмент для работы с большими наборами данных. Он позволяет не только фильтровать годы, но и очищать данные, объединять таблицы и автоматизировать обновления.
Шаг 1. Выделите исходную таблицу и нажмите Шаг 2. В открывшемся редакторе Power Query выделите колонку с датами, кликните по стрелке фильтра и выберите Шаг 3. Нажмите 1. Проверьте формат дат (должен быть 2. Удалите пустые строки в колонке с датами 3. Преобразуйте таблицу в "умную таблицу" ( 4. Сохраните файл перед началом работы (Power Query может зависнуть на больших данных) --> Если вам приходится фильтровать данные по годам регулярно, имеет смысл написать макрос на VBA. Например, этот код отфильтрует таблицу по выбранному году и скопирует результат на новый лист:
Dim ws As Worksheet Dim rng As Range Dim year As Integer ' Задаём год для фильтрации year = InputBox("Введите год (например, 2023):", "Фильтр по году") ' Выбираем диапазон с данными (например, A1:B1000) Set rng = Range("A1:B" & Cells(Rows.Count, "A").End(xlUp).Row) ' Добавляем автофильтр и фильтруем по году rng.AutoFilter Field:=1, Criteria1:=">=" & DateSerial(year, 1, 1), _ Operator:=xlAnd, Criteria2:="<=" & DateSerial(year, 12, 31) ' Копируем видимые строки на новый лист rng.SpecialCells(xlCellTypeVisible).Copy Sheets.Add ActiveSheet.Paste Application.CutCopyMode = False End SubДанные → Из таблицы/диапазона (или Данные → Получить данные → Из таблицы/диапазона в Excel 2016+).
Фильтры по дате → Год → Равно.... Укажите нужный год (например, "2023").
Закрыть и загрузить, чтобы вернуть отфильтрованные данные в Excel.
Дата, а не Текст)Ctrl+T)5. VBA-макрос: автоматизация для повторяющихся задач
Sub FilterByYear()
Чтобы использовать этот макрос:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Запустите макрос нажатием
F5. - В появившемся окне введите нужный год (например, "2023").
⚠️ Внимание: Макрос работает только с датами в формате ДД.ММ.ГГГГ. Если ваши данные хранятся иначе (например, "ГГГГ-ММ-ДД"), измените строку с DateSerial или предварительно преобразуйте формат.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с проблемами при фильтрации по годам. Вот самые распространённые ошибки и способы их решения:
1. Даты хранятся как текст
Симптом: автофильтр не предлагает группировку по годам, функция ГОД() возвращает ошибку.
Решение: выделите колонку с датами, нажмите Данные → Текст по столбцам → Готово. Если это не сработало, используйте формулу:
=ДАТАЗНАЧ(A2)
и растяните её на весь столбец.
2. Фильтр не показывает все годы
Симптом: в списке фильтра отображаются не все годы (например, только 2023 и 2026, хотя в данных есть 2020–2026).
Решение: проверьте, нет ли в данных пустых ячеек или ошибочных значений (например, "31.02.2023"). Также убедитесь, что фильтр применён ко всей таблице, а не к её части.
3. Сводная таблица "теряет" годы после обновления
Симптом: после обновления данных в сводной таблице пропадают некоторые годы.
Решение: кликните правой кнопкой по сводной таблице → Обновить. Если не помогло, проверьте исходный диапазон данных (возможно, новые строки не попали в него).
4. Power Query не видит годы в фильтре
Симптом: при попытке отфильтровать по году Power Query показывает пустой список.
Решение: убедитесь, что колонка с датами имеет тип Date (а не Text или Any). Для этого в редакторе Power Query выделите колонку, кликните правой кнопкой → Изменить тип → Дата.
FAQ: Частые вопросы о фильтрации по годам
Можно ли отфильтровать годы без создания нового столбца?
Да, но с ограничениями:
- В автофильтре можно сгруппировать даты по годам без дополнительных столбцов (см. раздел 1).
- В сводных таблицах группировка также не требует новых столбцов.
- Но если вам нужно использовать годы в формулах (например, для расчёта среднего по году), без отдельного столбца не обойтись.
Почему функция ГОД() возвращает 1899 вместо реального года?
Это означает, что Excel воспринимает вашу "дату" как число дней с 1 января 1900 года. Например, если в ячейке написано "1", функция ГОД() вернёт 1900 (1900 + 0 дней = 1900 год). Чтобы исправить:
- Проверьте формат ячейки (
Ctrl+1 → Число → Дата). - Если дата хранится как текст, используйте
=ДАТАЗНАЧ(A2).
Как отфильтровать данные по диапазону лет (например, 2020–2022)?
Способы в зависимости от инструмента:
- Автофильтр: примените фильтр по дате → "Между" → укажите
01.01.2020и31.12.2022. - Сводная таблица: сгруппируйте по годам, затем вручную выберите нужные в фильтре строк.
- Power Query: добавьте два фильтра: "Год >= 2020" и "Год <= 2022".
Можно ли фильтровать годы в Google Таблицах?
Да, методы почти идентичны:
- Автофильтр:
Данные → Создать фильтр → Фильтр по дате → Группировка по годам. - Функция
=ГОД(A2)работает так же, как в Excel. - Сводные таблицы: группировка по годам доступна через контекстное меню.
- Аналог Power Query — надстройка Apps Script (требует знания JavaScript).
⚠️ Внимание: в Google Таблицах нет встроенного Power Query, но можно использовать =QUERY() для сложной фильтрации.
Как сохранить фильтр по годам при закрытии файла?
Фильтры в Excel не сохраняются автоматически. Чтобы зафиксировать отфильтрованные данные:
- Скопируйте видимые строки (
Alt+;для выбора →Ctrl+C) на новый лист. - Используйте Power Query: после фильтрации нажмите
Закрыть и загрузить в...→Только создание подключения. Тогда при открытии файла данные будут обновляться автоматически. - Для сводных таблиц: сохраните файл с расширением
.xlsm(с поддержкой макросов), если используете VBA для автоматического применения фильтров.