Как вытащить год из даты в Excel: от простых формул до продвинутых методов

Почему извлечение года из даты — частая задача в Excel

Работа с датами в Microsoft Excel — одна из самых востребованных операций среди пользователей. Будь то анализ продаж по годам, составление отчётов с группировкой по временным периодам или просто необходимость выделить год из столбца с полными датами — задача возникает регулярно. Однако не все знают, что в Excel есть сразу несколько способов получить год из даты, и каждый из них подходит для разных сценариев.

Например, функция ГОД() кажется очевидной, но что делать, если даты хранятся в текстовом формате? Или как извлечь год из динамического диапазона без ручного ввода формул? В этой статье мы разберём все актуальные методы — от базовых до продвинутых, включая малоизвестные приёмы с Power Query и VBA, которые экономят часы работы с большими массивами данных.

Особое внимание уделим типичным ошибкам: почему функция ГОД() иногда возвращает 1900 вместо актуальной даты, как избежать проблем с региональными настройками и что делать, если Excel воспринимает ваши данные как текст, а не как дату. Эти нюансы часто становятся причиной потери времени, и мы покажем, как их обходить.

Способ 1: Функция ГОД() — самый простой метод

Если ваша дата уже распознана Excel как формат даты (а не текст), то функция ГОД() — это самый быстрый и надёжный способ. Она работает во всех версиях Excel, включая Excel 365, Excel 2019 и более ранние.

Синтаксис функции прост:

=ГОД(дата)

Где дата — это ссылка на ячейку с датой (например, A2) или сама дата в формате ДД.ММ.ГГГГ.

  • Плюсы: не требует дополнительных действий, работает с динамическими диапазонами.
  • ⚠️ Минусы: не сработает, если ячейка содержит текст (например, "01.01.2023" как строку).

Пример использования:

Дата в ячейке A2ФормулаРезультат
15.05.2023=ГОД(A2)2023
31.12.2020=ГОД(A3)2020
01.01.1999=ГОД(A4)1999
⚠️ Внимание: Если функция ГОД() возвращает 1900 или другое неверное значение, проверьте формат ячейки с исходной датой. Скорее всего, Excel воспринимает её как текст. Исправьте это через Формат ячеек → Дата или используйте функцию ДАТАЗНАЧ().
📊 Какой версии Excel вы пользуетесь?
Excel 365
Excel 2019
Excel 2016
Excel 2013 или старше

Способ 2: Функция ТЕКСТ() для нестандартных форматов

Когда дата хранится в текстовом формате (например, "Май 2023" или "2023/05/15"), функция ГОД() бессильна. Здесь на помощь приходит ТЕКСТ(), которая позволяет извлечь год из любой строки, если известен её формат.

Синтаксис:

=ТЕКСТ(дата; "гггг")

Где "гггг" — это маска для вывода четырёхзначного года. Если нужен двухзначный год (например, "23" вместо "2023"), используйте "гг".

  • 📅 Пример 1: Для даты в формате "ДД-ММ-ГГГГ" → =ТЕКСТ(A2; "гггг").
  • 📅 Пример 2: Для даты в формате "ММММ ГГГГ" (например, "Июнь 2023") → =ПРАВСИМВ(A2;4) (извлечёт "2023").
  • 📅 Пример 3: Для ISO-формата "ГГГГ-ММ-ДД" → =ЛЕВСИМВ(A2;4).

Если формат даты нестандартный, комбинируйте ТЕКСТ() с другими функциями, например, ПОИСК() или ПСТР():

=ПСТР(A2; ПОИСК("20"; A2); 4)

Эта формула найдёт первое вхождение "20" в строке и извлечёт следующие 4 символа (подходит для дат вида "15 мая 2023 года").

Способ 3: Разделение даты на компоненты (день, месяц, год)

Если вам нужно не только извлечь год, но и разделить дату на день, месяц и год, используйте комбинацию функций ДЕНЬ(), МЕСЯЦ() и ГОД(). Это полезно для создания отдельных столбцов в отчётах.

Пример:

Исходная дата (A2)ДеньМесяцГод
15.05.2023=ДЕНЬ(A2)=МЕСЯЦ(A2)=ГОД(A2)
31.12.2020=ДЕНЬ(A3)=МЕСЯЦ(A3)=ГОД(A3)

Для текстового формата даты сначала преобразуйте её в дату Excel с помощью ДАТАЗНАЧ():

=ГОД(ДАТАЗНАЧ(A2))
⚠️ Внимание: Функция ДАТАЗНАЧ() чувствительна к региональным настройкам. Если ваш Excel настроен на английский язык, используйте формат "ММ/ДД/ГГГГ" (например, "05/15/2023" вместо "15.05.2023"). В противном случае функция вернёт ошибку #ЗНАЧ!.

Убедиться, что ячейка содержит дату, а не текст|Проверить региональные настройки Excel|Преобразовать текстовые даты в формат даты с помощью ДАТАЗНАЧ()|Использовать функцию ГОД() для чистых данных-->

Способ 4: Power Query — обработка больших массивов

Если вам нужно извлечь год из тысяч строк, ручной ввод формул неэффективен. Здесь поможет Power Query — инструмент для преобразования данных, доступный в Excel 2016 и новее (вкладка Данные → Получить данные).

Пошаговая инструкция:

  1. Выделите диапазон с датами и нажмите Данные → Из таблицы/диапазона (Excel преобразует данные в таблицу).
  2. В открывшемся редакторе Power Query выделите столбец с датами.
  3. Перейдите на вкладку Преобразовать и выберите Дата → Год → Год.
  4. Нажмите Закрыть и загрузить — Excel создаст новый столбец с годами.

Преимущества Power Query:

  • 🔄 Автоматически обновляет данные при изменении исходного диапазона.
  • 📊 Поддерживает сложные преобразования (например, извлечение года из даты в формате "15-Май-2023").
  • ⚡ Работает в 10–100 раз быстрее формул на больших объёмах данных.
Как изменить тип данных в Power Query?

Если Excel неверно распознал формат даты в Power Query, выделите столбец → на вкладке Преобразовать выберите Тип данных → Дата или Дата/время. Если дата хранится как текст, сначала используйте Преобразовать → Формат → Дата.

Способ 5: VBA-макрос для автоматизации

Для повторяющихся задач или обработки данных по расписанию удобно использовать VBA. Например, следующий макрос извлечёт год из выделенного диапазона и запишет результаты в соседний столбец:

Sub ExtractYear()

Dim rng As Range

Dim cell As Range

Dim outputCol As Integer

' Выбираем диапазон с датами

Set rng = Selection

' Определяем столбец для вывода (следующий после выделенного)

outputCol = rng.Column + 1

' Обрабатываем каждую ячейку

For Each cell In rng

If IsDate(cell.Value) Then

Cells(cell.Row, outputCol).Value = Year(cell.Value)

Else

Cells(cell.Row, outputCol).Value = "Ошибка: не дата"

End If

Next cell

End Sub

Как использовать:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Выделите диапазон с датами и запустите макрос (F5).

Макрос автоматически проверяет, является ли значение датой, и извлекает год. Если ячейка содержит текст, он выведет сообщение об ошибке.

⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов), иначе Excel заблокирует выполнение кода. Также проверьте настройки безопасности: Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов (выберите "Включить все макросы").

Способ 6: Извлечение года из динамических диапазонов

Если ваши данные постоянно обновляются (например, импортируются из внешнего источника), статичные формулы придётся протягивать вручную. Решение — динамические массивы (доступны в Excel 365 и Excel 2021).

Пример: извлечь год из всего столбца A и автоматически заполнить столбец B:

=ГОД(A2:A100)

Excel сам определит размер выходного диапазона. Если в столбце A 50 ячеек с датами, формула вернёт 50 значений в столбце B.

Для текстового формата используйте комбинацию:

=ЕСЛИОШИБКА(ГОД(ДАТАЗНАЧ(A2:A100)); "Не дата")

Преимущества динамических массивов:

  • 🔄 Автоматически расширяются при добавлении новых данных.
  • 📈 Поддерживают сложные вычисления (например, фильтрацию по году).
  • ⚡ Не требуют ручного протягивания формул.

Ограничение: в старых версиях Excel (до 2019) динамические массивы не работают. В этом случае используйте Power Query или VBA.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel сталкиваются с проблемами при работе с датами. Вот самые распространённые ошибки и их решения:

ОшибкаПричинаРешение
Функция ГОД() возвращает 1900Ячейка содержит текст, а не датуИспользуйте ДАТАЗНАЧ() или измените формат ячейки
Ошибка #ЗНАЧ! в ДАТАЗНАЧ()Неправильный разделитель даты (точка вместо косой черты)Замените разделители: =ДАТАЗНАЧ(ПОДСТАВИТЬ(A2; "."; "/"))
Год извлекается неверно (например, "23" вместо "2023")Используется "гг" вместо "гггг" в функции ТЕКСТ()Поменяйте формат на "гггг"
Макрос не работаетФайл сохранён в формате .xlsx (без поддержки макросов)Сохраните файл как .xlsm

Ещё одна частая проблема — региональные настройки. Например, в американском Excel дата "01.05.2023" будет воспринята как 1 мая, а в европейском — как 5 января. Чтобы избежать путаницы:

  • 🌍 Используйте универсальный формат ГГГГ-ММ-ДД (ISO).
  • 🌍 Или явно указывайте формат в формулах: =ДАТАЗНАЧ("15.05.2023") не сработает в английской версии, а =ДАТАЗНАЧ("15/05/2023") — сработает.

FAQ: Частые вопросы по извлечению года из даты

Можно ли извлечь год из даты без формул?

Да, вручную: выделите ячейки с датами → Формат ячеек → Пользовательский → введите формат гггг. Однако это изменит отображение ячейки, но не её значение. Для дальнейших вычислений лучше использовать формулы.

Как извлечь год из даты в формате "15 мая 2023 года"?

Используйте комбинацию функций:

=ПРАВСИМВ(A2;4)

Или, если формат варьируется:

=ЕСЛИОШИБКА(ПРАВСИМВ(A2;4); ЕСЛИОШИБКА(ПСТР(A2;ПОИСК("20";A2);4); "Ошибка"))
Почему функция ГОД() возвращает ошибку #ЗНАЧ!?

Это означает, что ячейка содержит текст, а не дату. Преобразуйте её с помощью:

=ГОД(ДАТАЗНАЧ(A2))

Если и это не помогает, проверьте региональные настройки или используйте Power Query.

Как извлечь год из даты в Google Таблицах?

В Google Sheets используйте ту же функцию =YEAR(A2) (аналог ГОД() в Excel). Для текстового формата подойдёт:

=ARRAYFORMULA(IFERROR(YEAR(DATEVALUE(A2:A))))
Можно ли извлечь год из даты в формате Unix Timestamp?

Да, сначала преобразуйте timestamp в дату Excel:

=ГОД(ДАТА(1970;1;1)+A2/86400)

Где A2 — ячейка с Unix timestamp (количество секунд с 1 января 1970 года).