Проблема: как отделить год от полной даты в Excel
Вы загрузили в Excel таблицу с датами рождения в формате 15.03.1987 или March 15, 1987, а для анализа нужны только годы? Или вам требуется посчитать возраст сотрудников, но сначала нужно выделить год из ячейки с полной датой? Эта задача возникает при работе с кадрами, клиентскими базами, медицинскими записями и статистическими отчётами.
В Excel есть минимум 5 способов извлечь год из даты — от простейших функций до продвинутых приёмов для нестандартных форматов. Мы разберём каждый метод с примерами, нюансами и типичными ошибками. Вы узнаете, как обработать даты в формате DD.MM.YYYY, MM/DD/YY, а также текстовые даты типа "15 марта 1987 года". Все решения работают в Excel 2007–2023 и Office 365.
Важно: если ваши даты хранятся как текст (в ячейке видно зелёный треугольник в левом верхнем углу), сначала преобразуйте их в формат даты — иначе функции не сработают. Как это сделать, читайте в разделе про ошибки.
Способ 1: Функция ГОД() — самый простой метод
Функция ГОД() (англ. YEAR) специально создана для извлечения года из даты. Она работает с ячейками, где дата хранится в формате даты (не текст!). Синтаксис:
=ГОД(ячейка_с_датой)
или
=YEAR(cell_with_date)
Примеры использования:
- 📅 Для ячейки
A2с датой15.03.1987:=ГОД(A2)вернёт1987. - 📅 Если дата введена как текст
"15/03/1987", функция вернёт ошибку#ЗНАЧ!— сначала преобразуйте текст в дату (см. раздел про ошибки). - 📅 Для текущей даты:
=ГОД(СЕГОДНЯ())вернёт текущий год.
Преимущества метода:
- ⚡ Мгновенный результат — одна функция вместо длинных формул.
- 🔄 Автоматическое обновление при изменении исходной даты.
- 🌍 Работает во всех локализациях Excel (русской, английской и др.).
⚠️ Внимание: Если после применения функции вы видите пятизначное число (например,44197), значит ячейка с датой отформатирована как число. Измените формат наДата(выделите ячейку →Главная → Формат → Формат ячеек → Дата).
Способ 2: Функция ТЕКСТ() для нестандартных форматов
Когда дата хранится в необычном формате (например, "15 марта 1987 г." или "1987/03/15"), функция ГОД() может не сработать. Здесь поможет ТЕКСТ() (англ. TEXT), которая преобразует дату в текст по заданному шаблону.
Синтаксис:
=ТЕКСТ(ячейка_с_датой; "yyyy")
или
=TEXT(cell_with_date, "yyyy")
Примеры:
| Исходная дата в ячейке A2 | Формула | Результат |
|---|---|---|
15.03.1987 (формат даты) | =ТЕКСТ(A2; "yyyy") | 1987 |
"15 марта 1987 г." (текст) | =ТЕКСТ(ДАТАЗНАЧ(A2); "yyyy") | 1987 |
1987/03/15 (американский формат) | =ТЕКСТ(A2; "yyyy") | 1987 |
Нюансы:
- 🔹 Если дата хранится как текст, сначала преобразуйте её в формат даты с помощью
ДАТАЗНАЧ()(англ.DATEVALUE). - 🔹 Шаблон
"yyyy"возвращает полный год (4 цифры), а"yy"— две последние цифры (например,87вместо1987). - 🔹 Для дат вроде "март 1987" (без дня) используйте шаблон
"yyyy"с функциейДАТА():
=ТЕКСТ(ДАТА(1; МЕСЯЦ(ДАТАЗНАЧ("1 " & A2)); 1); "yyyy")
Способ 3: Текст по столбцам — для ручного разделения
Если даты в вашей таблице имеют фиксированный разделитель (точка, запятая, пробел, тире) и одинаковый порядок дня/месяца/года, можно использовать инструмент Текст по столбцам. Это не формула, а встроенная функция Excel для разбора текста.
Пошаговая инструкция:
- Выделите столбец с датами.
- Перейдите на вкладку
Данные→Текст по столбцам. - Выберите
С разделителями→Далее. - Укажите разделитель (например, точку для
DD.MM.YYYYили пробел для"15 марта 1987"). - На шаге
Формат данных столбцавыберите для третьего столбца (года) форматТекстовый. - Нажмите
Готово— год будет выделен в отдельный столбец.
Преимущества метода:
- 🎯 Точность: работает даже с нестандартными разделителями (например,
15-марта-1987). - 📊 Визуальный контроль: вы видите результат до применения.
- 🔄 Обратимость: исходные данные не изменяются (создаётся копия).
⚠️ Внимание: Если в ваших датах используется разный порядок дня и месяца (например, смесьDD.MM.YYYYиMM.DD.YYYY), этот метод даст ошибки. В таком случае используйте функцииДЕНЬ(),МЕСЯЦ()иГОД()для проверки.
Убедиться, что все даты имеют одинаковый разделитель
Проверить порядок дня/месяца/года (DD.MM или MM.DD)
Создать резервную копию исходных данных
Выбрать пустой столбец справа для результата-->
Способ 4: Формулы для текстовых дат (ПСТР, ПОИСК, ДЛСТР)
Когда даты хранятся как текст в нестандартном формате (например, "родился 15 марта 1987 года" или "1987г."), придётся использовать текстовые функции. Основные инструменты:
ПСТР()(англ.MID) — извлекает подстроку.ПОИСК()(англ.FIND) — находит позицию символа.ДЛСТР()(англ.LEN) — возвращает длину строки.
Примеры формул для разных форматов:
| Формат даты в ячейке A2 | Формула | Результат |
|---|---|---|
"15.03.1987" (текст) | =ПСТР(A2; 7; 4) | 1987 |
"март 1987" | =ПСТР(A2; ПОИСК(" "; A2)+1; 4) | 1987 |
"родился в 1987" | =ПСТР(A2; ДЛСТР(A2)-4; 4) | 1987 |
"15/03/87" (двузначный год) | =ЕСЛИ(ДЛСТР(ПСТР(A2;4;2))=2; "19"&ПСТР(A2;4;2); ПСТР(A2;4;2)) | 1987 |
Для дат с названием месяца на русском (например, "15 марта 1987") используйте комбинацию ПОИСК() и массива месяцев:
=ПСТР(A2; ПОИСК(" "; A2; ПОИСК(" "; A2)+1)+1; 4)
Критическая деталь: если в тексте встречаются даты с двузначным годом (например, "87"), используйте функцию ЕСЛИ() для добавления префикса "19" или "20" в зависимости от контекста. Например, для людей старше 30 лет логично добавлять "19", а для младше — "20".
Способ 5: Power Query — для больших таблиц
Если вам нужно обработать тысячи строк или даты хранятся в сложном формате (например, JSON или смешанные форматы), используйте Power Query — инструмент для преобразования данных в Excel (доступен в Excel 2016+ и Office 365).
Пошаговая инструкция:
- Выделите исходные данные →
Данные → Из таблицы/диапазона(илиGet Data → From Table/Range). - В открывшемся редакторе Power Query выделите столбец с датами.
- Перейдите на вкладку
Преобразовать(Transform) →Разделить столбец(Split Column) →По разделителю. - Укажите разделитель (например, точка для
DD.MM.YYYY). - Выберите часть с годом →
Закрыть и загрузить.
Преимущества Power Query:
- 🔄 Обработка миллионов строк без замедления Excel.
- 🔄 Возможность сохранять шаги преобразования для повторного использования.
- 🔄 Поддержка сложных форматов (например, даты внутри JSON-строк).
Как обработать даты в формате "15мар1987" (без разделителей)?
Используйте функцию ДАТАЗНАЧ() с подстановкой разделителей:
=ГОД(ДАТАЗНАЧ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2; "янв"; ".01."); "мар"; ".03.")&".1987"))
Для универсального решения напишите пользовательскую функцию на VBA или используйте Power Query с заменой текста.
Типичные ошибки и как их исправить
При извлечении года из даты пользователи часто сталкиваются с ошибками. Вот самые распространённые проблемы и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! в функции ГОД() | Дата хранится как текст, а не как формат даты. | Используйте ДАТАЗНАЧ() или преобразуйте столбец в формат даты (Главная → Формат → Формат ячеек → Дата). |
Функция возвращает 1905 вместо реального года | Excel интерпретирует текст как дату, начиная с 1900 года. | Проверьте исходные данные на опечатки (например, 32.01.1987 вместо 31.01.1987). |
Год отображается как 44197 | Ячейка с датой отформатирована как число (количество дней с 1900 года). | Измените формат ячейки на Дата или используйте =ТЕКСТ(A2; "yyyy"). |
Функция ПСТР() возвращает ошибку | Неверно указаны позиции начала или длины подстроки. | Проверьте формулу с помощью ПОИСК() для точного определения позиции года. |
Если ваши даты хранятся в формате Unix timestamp (количество секунд с 1970 года), используйте формулу:
=ГОД(ДАТА(1970;1;1)+A2/86400)
⚠️ Внимание: В Excel для Mac и Windows используются разные системы дат! В Windows отсчёт идёт с1900 года, а в Mac (до 2011 года) — с1904 года. Если вы переносите файлы между платформами, проверяйте настройки вФайл → Параметры → Дополнительно → При вычислениях использовать систему дат 1904.
FAQ: Ответы на частые вопросы
Можно ли извлечь год из даты без формул?
Да, есть два способа:
- Текст по столбцам (раздел 3 статьи) — подходит для фиксированных форматов.
- Копирование с преобразованием: скопируйте столбец с датами, затем вставьте как
Значенияв новый столбец и отформатируйте ячейки какyyyy.
Однако эти методы не обновляются автоматически при изменении исходных данных.
Как извлечь год из даты в формате "15 марта 1987 года"?
Используйте комбинацию функций ПОИСК() и ПСТР():
=ПСТР(A2; ПОИСК(" "; A2; ПОИСК(" "; A2)+1)+1; 4)
Если в тексте есть слово "года", упростите формулу:
=ПСТР(A2; ПОИСК("года"; A2)-5; 4)
Почему функция ГОД() возвращает 1905 год для моей даты?
Это происходит, если:
- В ячейке текст, который Excel интерпретирует как дату
01.01.1905(например, пустая ячейка или некорректный текст). - Дата введена с опечаткой (например,
32.01.1987вместо31.01.1987). - Включена система дат
1904(проверьте вФайл → Параметры → Дополнительно).
Решение: проверьте исходные данные на корректность и преобразуйте текст в дату с помощью ДАТАЗНАЧ().
Как автоматически определить век по году рождения?
Используйте формулу:
=ОКРУГЛВВЕРХ(ГОД(A2)/100; 0) & " век"
Для года 1987 результат будет "20 век". Чтобы получить римские цифры, добавьте функцию ВЫБОР():
=ВЫБОР(ОКРУГЛВВЕРХ(ГОД(A2)/100;0);"I";"II";"III";...;"XXI") & " век"
Можно ли извлечь год из даты в Google Таблицах?
Да, в Google Sheets работают те же функции:
=YEAR(A2)— аналогГОД().=TEXT(A2; "yyyy")— аналогТЕКСТ().=SPLIT(A2; ".")— аналогТекст по столбцам.
Отличие: в Google Таблицах нет Power Query, но есть APPSCRIPT для сложных преобразований.