Почему разделение даты в Excel требует особого подхода
Дата в Microsoft Excel — это не просто текст или число. Под капотом программы каждая дата хранится как последовательный номер, где 1 января 1900 года соответствует числу 1, а текущая дата — уже пятизначному значению. Когда вы вводите 15.07.2026 в ячейку, Excel автоматически преобразует её в формат даты, но внутренне обрабатывает как число 45487 (для 15 июля 2026 года). Эта двойственность и создаёт сложности при разделении.
Проблема усугубляется тем, что пользователи часто пытаются разделить дату как текст — через ТЕКСТ.ПОСЛЕ() или ПСТР(), — но такой подход ломается при смене региональных настроек (например, в американском формате даты месяц идёт первым: 07/15/2026 вместо 15.07.2026). Поэтому надёжные методы должны оперировать не со строковым представлением, а с внутренним числовым значением даты.
В этой статье мы разберём 5 способов разделения даты — от элементарных функций до автоматизации через VBA, — а также покажем, как избежать типичных ошибок при работе с разными форматами дат в Excel 2010–2023 и Office 365.
Способ 1: Стандартные функции ДЕНЬ(), МЕСЯЦ(), ГОД()
Самый очевидный и надёжный метод — использовать встроенные функции ДЕНЬ(), МЕСЯЦ() и ГОД(). Они работают с внутренним числовым представлением даты, поэтому не зависят от формата отображения в ячейке.
Формулы имеют простейший синтаксис:
- 📅
=ДЕНЬ(A1)— извлекает день (число от 1 до 31) - 📆
=МЕСЯЦ(A1)— возвращает месяц (1–12) - 🗓️
=ГОД(A1)— показывает год (например, 2026)
Пример: если в ячейке A1 записана дата 15.07.2026, то:
| Формула | Результат | Тип данных |
|---|---|---|
=ДЕНЬ(A1) | 15 | Число |
=МЕСЯЦ(A1) | 7 | Число |
=ГОД(A1) | 2026 | Число |
=ТЕКСТ(A1;"дд.мм.гггг") | 15.07.2026 | Текст |
⚠️ Внимание: Если в ячейкеA1дата хранится как текст (например, после импорта из CSV), функции вернут ошибку#ЗНАЧ!. Чтобы исправить это, предварительно преобразуйте текст в дату с помощью=ДАТАЗНАЧ(A1).
Проверьте формат ячейки с датой (должен быть "Дата", а не "Текст" или "Общий")
Убедитесь, что дата не содержит лишних символов (например, "15.07.2026 г." → удалите " г.")
При импорте из внешних источников используйте =ДАТАЗНАЧ() для преобразования текста в дату
Создайте резервную копию данных перед массовыми изменениями-->
Способ 2: Текстовые функции (ПСТР, ЛЕВСИМВ, ПРАВСИМВ) — когда их можно использовать
Текстовые функции подходят только для дат с фиксированным форматом, где разделители (точка, тире, слеш) стоят на строго определённых позициях. Например, для даты 15-07-2026 можно извлечь компоненты так:
- 🔢 День:
=ЛЕВСИМВ(A1;2)(первые 2 символа) - 📌 Месяц:
=ПСТР(A1;4;2)(начиная с 4-го символа, длина 2) - 📅 Год:
=ПРАВСИМВ(A1;4)(последние 4 символа)
Однако этот метод крайне ненадёжен при изменении формата даты. Например, если дата записана как 7/15/2026 (американский формат), та же формула вернёт неверные результаты: день станет 7, а месяц — 15.
Чтобы снизить риски, комбинируйте текстовые функции с проверкой формата:
=ЕСЛИ(ДЛСТР(A1)=10;
ЕСЛИ(ПСТР(A1;3;1)="."; // Проверяем разделитель
ДАТАЗНАЧ(A1); // Если формат "дд.мм.гггг"
"Неверный формат"
);
"Неверная длина"
)
⚠️ Внимание: Текстовые функции не распознают даты как числовые значения. Если вам нужно дальнейшее вычисление (например, прибавить к дню 5), результатПСТР()придётся конвертировать обратно в число с помощью=--ТЕКСТ.
Как определить формат даты в ячейке?
1. Выделите ячейку с датой.
2. Нажмите Ctrl+1 (или правая кнопка → "Формат ячеек").
3. Перейдите на вкладку "Число".
4. Если выбран формат "Дата", но отображается как текст — значит, данные были введены как строка (например, через импорт).
Способ 3: Функция ТЕКСТ() для гибкого форматирования
Функция ТЕКСТ() позволяет извлечь компоненты даты в любом текстовом виде, не теряя при этом связь с исходным числовым значением. Её главный плюс — универсальность: она работает независимо от региональных настроек Excel.
Синтаксис:
=ТЕКСТ(дата; "формат")
Примеры форматирования:
- 📅 День:
=ТЕКСТ(A1;"д")или=ТЕКСТ(A1;"дд")(с ведущим нулём) - 🌙 Месяц:
=ТЕКСТ(A1;"м")(число),=ТЕКСТ(A1;"ммм")(сокращённое название, например "июл") - 🗓️ Год:
=ТЕКСТ(A1;"г")(полный) или=ТЕКСТ(A1;"гг")(две последние цифры)
Преимущество этого метода — возможность получить текстовое представление месяца на русском языке:
=ТЕКСТ(A1;"[$-419]мммм") // Вернёт "июль" вместо "7"
| Формула | Результат для 15.07.2026 | Тип данных |
|---|---|---|
=ТЕКСТ(A1;"д") | 15 | Текст |
=ТЕКСТ(A1;"мм") | 07 | Текст |
=ТЕКСТ(A1;"гггг") | 2026 | Текст |
=ТЕКСТ(A1;"дд ммм гг") | 15 июл 24 | Текст |
Способ 4: Разделение даты на столбцы (инструмент "Текст по столбцам")
Если вам нужно однократно разделить большой массив дат (например, после импорта из внешней системы), удобнее использовать встроенный инструмент Текст по столбцам. Он работает даже с текстовыми датами, но требует предварительной настройки.
Пошаговая инструкция:
- Выделите столбец с датами.
- Перейдите на вкладку
Данные→Текст по столбцам. - Выберите
С разделителями→Далее. - Укажите разделитель (точка, тире, слеш) или выберите
Другойи введите символ вручную. - Нажмите
Готово— Excel разобьёт дату на отдельные столбцы.
Ограничения метода:
- ❌ Не работает с датами в числовом формате (только текст).
- ❌ Требует одинакового разделителя во всех ячейках.
- ❌ Результат — текст, а не числа (нужна дополнительная конвертация для расчётов).
⚠️ Внимание: После разделения инструмент Текст по столбцам заменяет исходные данные. Если нужно сохранить оригинал, предварительно скопируйте столбец в другое место.
Способ 5: Автоматизация через VBA (для продвинутых пользователей)
Если вам нужно разделять даты регулярно или обрабатывать нестандартные форматы, напишите простую процедуру на VBA. Например, этот макрос создаст три новых столбца с днём, месяцем и годом рядом с выделенными ячейками:
Sub SplitDate()
Dim rng As Range
Dim cell As Range
Dim i As Integer
Set rng = Selection
i = 1
For Each cell In rng
If IsDate(cell.Value) Then
cell.Offset(0, i).Value = Day(cell.Value)
cell.Offset(0, i + 1).Value = Month(cell.Value)
cell.Offset(0, i + 2).Value = Year(cell.Value)
Else
cell.Offset(0, i).Value = "Ошибка"
End If
Next cell
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите ячейки с датами в Excel.
- Запустите макрос (
F5или черезМакросыв менюВид).
Преимущества VBA:
- 🔄 Обрабатывает тысячи строк за секунды.
- 🛠️ Можно доработать под любой формат даты.
- 📊 Результат — числа, а не текст (готовы для расчётов).
⚠️ Внимание: Перед запуском макроса сохраните файл в формате.xlsm(с поддержкой макросов) и включите их выполнение в настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы).
Типичные ошибки и как их избежать
Даже опытные пользователи сталкиваются с проблемами при разделении дат. Вот самые распространённые ловушки:
- Дата как текст: Если дата импортирована из CSV или введена вручную как строка, функции
ДЕНЬ()вернут ошибку. Решение: используйте=ДАТАЗНАЧ()или преобразуйте столбец черезТекст по столбцам. - Региональные настройки: В американском Excel формат по умолчанию —
мм/дд/гггг. Если ваша дата введена как07.15.2026, Excel может интерпретировать её как 7-е число 15-го месяца (ошибка!). Решение: явно указывайте формат при вводе или используйтеТЕКСТ(). - Двузначные годы: Функция
ГОД()для даты15.07.24может вернуть1924вместо2026. Решение: всегда вводите годы полностью или используйте=ЕСЛИ(ГОД(A1)<100; ГОД(A1)+2000; ГОД(A1)).
Проверьте себя: если в ячейке A1 записано 31.02.2026, что вернёт формула =ДЕНЬ(A1)?
Ответ
Excel автоматически скорректирует несуществующую дату на 02.03.2026, поэтому =ДЕНЬ(A1) вернёт 2, а не 31. Чтобы избежать такого поведения, используйте проверку =ЕСЛИ(ЕОШИБКА(ДЕНЬ(A1)); "Неверная дата"; ДЕНЬ(A1)).
FAQ: Частые вопросы по разделению дат в Excel
Можно ли разделить дату на день недели?
Да, используйте функцию =ТЕКСТ(A1;"дддд") (вернёт "понедельник", "вторник" и т. д.) или =ДЕНЬНЕД(A1) (вернёт число от 1 до 7, где 1 — воскресенье). Для русского языка добавьте локаль: =ТЕКСТ(A1;"[$-419]дддд").
Как разделить дату и время (например, "15.07.2026 14:30")?
Используйте:
- Для даты:
=ЦЕЛОЕ(A1)(отбросит дробную часть) - Для времени:
=A1-ЦЕЛОЕ(A1)(вернёт время как дробь, например0,604для 14:30) - Для форматированного времени:
=ТЕКСТ(A1;"чч:мм")
Почему функция ГОД() возвращает 1905 вместо 2026?
Это происходит из-за двузначного года (например, в ячейке записано 15.07.24). Excel интерпретирует 24 как 1924. Решения:
- Вводите годы полностью (
2026). - Используйте формулу:
=ЕСЛИ(ГОД(A1)<100; ГОД(A1)+2000; ГОД(A1)). - Настройте систему на 4-значный год в параметрах Windows.
Как разделить дату в Google Таблицах?
В Google Sheets работают те же функции, но с английскими названиями:
=DAY(A1)→ день=MONTH(A1)→ месяц=YEAR(A1)→ год=TEXT(A1; "dd/mm/yyyy")→ форматированная дата
Для разделения через меню: Данные → Разделить текст на столбцы.
Можно ли разделить дату без формул?
Да, двумя способами:
- Копирование с транслитерацией: Скопируйте столбец с датами, затем выполните
Специальная вставка → Значенияв новые столбцы. Далее используйтеТекст по столбцам. - Power Query: Загрузите данные в
Power Query(Данные → Получить данные → Из таблицы/диапазона), затем разделите столбец по разделителю.