Почему формат даты в Excel — это важно
Дата в Microsoft Excel — это не просто текст или число, а особый тип данных, который программа интерпретирует как количество дней, прошедших с 1 января 1900 года (или 1904 года в Mac-версиях). Именно поэтому неправильное форматирование может привести к ошибкам в расчётах, сортировке или даже поломке формул. Например, если вы импортировали данные из 1С или Google Sheets, даты могут отображаться как пятизначные числа (например, 44197 вместо 01.01.2021).
Переформатирование даты нужно не только для красоты. Оно решает реальные задачи:
- 📅 Преобразование текстовой даты (
"01-янв-2023") в числовой формат для расчётов. - 📊 Приведение дат к единому виду перед построением графиков или сводных таблиц.
- 🔄 Конвертация американского формата (
MM/DD/YYYY) в европейский (DD.MM.YYYY). - 📈 Извлечение дня недели, месяца или года для анализа временных рядов.
В этой статье мы разберём 5 рабочих способов изменить формат даты — от базовых инструментов до продвинутых приёмов с формулами и VBA. Вы узнаете, как избежать типичных ошибок (например, когда Excel воспринимает дату как текст) и автоматизировать процесс для больших массивов данных.
Способ 1: Стандартное форматирование ячеек
Самый простой метод — использовать встроенные форматы дат. Он подходит, если ваша дата уже распознана Excel как дата (а не текст), но отображается не так, как нужно.
Как это сделать:
- Выделите ячейки с датами.
- Нажмите правой кнопкой мыши и выберите
Формат ячеек...(или используйте сочетаниеCtrl+1). - В открывшемся окне перейдите на вкладку
Число→Дата. - Выберите нужный формат из списка (например,
14.03.2012или14 марта 2012 г.).
Если подходящего формата нет, нажмите Дополнительно... и создайте свой шаблон вручную. Например, код дд.мм.гггг, дddd отобразит дату как 01.01.2023, воскресенье.
| Код формата | Пример отображения | Описание |
|---|---|---|
дд.мм.гггг |
01.01.2023 |
День, месяц (двузначный), год (четырёхзначный) |
д мmmм гггг |
1 янв 2023 |
День без ведущего нуля, сокращённый месяц |
дддд, д мmmм |
воскресенье, 1 янв |
День недели полный, день и месяц |
м/д/гг |
1/1/23 |
Американский формат (месяц/день/год) |
⚠️ Внимание: Если после применения формата дата не изменилась, значит Excel воспринимает её как текст. В этом случае используйте Способ 3 (функция ДАТАЗНАЧ).
Способ 2: Текст в дату — функция ДАТАЗНАЧ
Когда дата хранится как текст (например, после импорта из CSV или PDF), Excel не может её распознать для сортировки или вычислений. Функция ДАТАЗНАЧ (или DATEVALUE в английской версии) преобразует текстовую дату в числовой формат.
Синтаксис:
=ДАТАЗНАЧ("текстовая_дата")
Примеры:
- 📌
=ДАТАЗНАЧ("01.01.2023")→ вернёт44927(серийный номер даты). - 📌
=ДАТАЗНАЧ("1 января 2023")→ тоже сработает. - 🚫
=ДАТАЗНАЧ("01/01/2023")→ может вернуть ошибку, если Excel воспримет это как американский формат.
После применения функции не забудьте изменить формат ячейки на Дата, иначе увидите число.
Почему ДАТАЗНАЧ не работает с американским форматом?
Excel интерпретирует "01/02/2023" как 1 февраля (европейский стиль) или 2 января (американский). Если ваш регион — Россия, но данные в американском формате, используйте формулу =ДАТА(ГОД(A1);МЕСЯЦ(A1);ДЕНЬ(A1)) или замените "/" на "." через ПОДСТАВИТЬ.
Способ 3: Разделение даты на день, месяц, год
Иногда нужно извлечь из даты отдельные компоненты — например, для анализа продаж по месяцам или построения динамики по годам. Для этого используйте функции:
- 📅
ДЕНЬ(дата)— возвращает день (1–31). - 📅
МЕСЯЦ(дата)— возвращает месяц (1–12). - 📅
ГОД(дата)— возвращает год (например, 2023). - 📅
ДЕНЬНЕД(дата)— возвращает день недели (1–7, где 1 = воскресенье).
Пример: если в ячейке A1 дата 15.05.2023, то:
=ДЕНЬ(A1) → 15
=МЕСЯЦ(A1) → 5
=ГОД(A1) → 2023
=ДЕНЬНЕД(A1) → 2 (понедельник)
Для отображения названия месяца или дня недели используйте ТЕКСТ:
=ТЕКСТ(A1; "мммм") → "май"
=ТЕКСТ(A1; "дддд") → "понедельник"
Выделите ячейку для результата
Введите функцию (ДЕНЬ, МЕСЯЦ или ГОД)
Укажите ссылку на ячейку с датой
Примените формат "Общий" или "Текстовый" при необходимости
-->
Способ 4: Формулы для сложных преобразований
Если стандартные инструменты не справляются, используйте комбинации функций. Рассмотрим типичные задачи:
1. Преобразование текста в дату (альтернатива ДАТАЗНАЧ):
Когда ДАТАЗНАЧ не работает (например, с датами вида "2023-01-01"), используйте:
=ДАТА(ЛЕВСИМВ(A1;4); ПСТР(A1;6;2); ПСТР(A1;9;2))
2. Замена разделителей в дате:
Если дата в формате 2023/01/01, а нужно 2023-01-01:
=ПОДСТАВИТЬ(A1; "/"; "-")
3. Добавление дней к дате:
Чтобы прибавить 10 дней к дате в A1:
=A1+10
4. Разница между датами в днях:
=A2-A1
⚠️ Внимание: При вычитании дат убедитесь, что обе ячейки имеют форматДата. Если одна из них текстовая, результат будет некорректным (например,#ЗНАЧ!).
Способ 5: Автоматизация с помощью VBA
Для массового переформатирования дат в больших файлах удобно использовать VBA-скрипты. Например, этот код преобразует все выделенные текстовые даты в формат дд.мм.гггг:
Sub ConvertTextToDate()
Dim cell As Range
For Each cell In Selection
If IsDate(cell.Value) Then
cell.Value = CDate(cell.Value)
cell.NumberFormat = "dd.mm.yyyy"
End If
Next cell
End Sub
Как использовать:
- Выделите диапазон с датами.
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Запустите макрос (
F5).
Этот метод особенно полезен, если даты импортированы из внешних источников (например, баз данных) и имеют нестандартный формат, который Excel не распознаёт автоматически.
Типичные ошибки и как их избежать
Даже опытные пользователи сталкиваются с проблемами при работе с датами. Вот самые распространённые:
- 🔴 Дата отображается как текст: Проверьте формат ячейки (должен быть
ДатаилиОбщий). Если не помогает, используйтеДАТАЗНАЧилиТЕКСТНАЧ. - 🔴 Некорректная сортировка: Убедитесь, что все даты в одном формате. Например,
01.01.2023и1-янв-23будут сортироваться по-разному. - 🔴 Ошибка #ЗНАЧ! при вычитании дат: Одна из ячеек содержит текст. Используйте
ЕЧИСЛОдля проверки:=ЕЧИСЛО(A1). - 🔴 Дата сбивается при импорте из CSV: При открытии файла выберите столбец с датами и укажите формат
ДМГ(день-месяц-год).
Если Excel упорно не распознаёт дату, попробуйте разбить текст по символам:
- Вставьте вспомогательный столбец с формулой
=ЛЕВСИМВ(A1;2)(для дня),=ПСТР(A1;4;2)(месяц),=ПРАВСИМВ(A1;4)(год). - Соберите дату обратно:
=ДАТА(год; месяц; день).
FAQ: Ответы на частые вопросы
Как преобразовать дату из текстового формата "20230101" в нормальный вид?
Используйте формулу:
=ДАТА(ЛЕВСИМВ(A1;4); ПСТР(A1;5;2); ПРАВСИМВ(A1;2))
Затем примените нужный формат даты к ячейке.
Почему после копирования даты из Excel в Word она меняется?
Word и Excel могут использовать разные региональные настройки. Перед копированием преобразуйте дату в текст с фиксированным форматом:
=ТЕКСТ(A1; "дд.мм.гггг")
Как в Excel отобразить дату в формате "1-й квартал 2023"?
Используйте комбинацию функций:
=ТЕКСТ(A1; "[$-ru-RU]\"квартал \"q \"г.\"") & ГОД(A1)
Или для ручной настройки:
="Квартал " & ОКРВВЕРХ(МЕСЯЦ(A1)/3; 0) & ", " & ГОД(A1)
Можно ли автоматически обновлять дату "сегодня" в Excel?
Да, используйте функцию СЕГОДНЯ() (или TODAY()). Она всегда будет показывать текущую дату. Чтобы зафиксировать дату на момент ввода, нажмите Ctrl+;.
Как перевести дату из Excel в Unix timestamp?
Unix timestamp — это количество секунд с 1 января 1970 года. Формула:
=ЦЕЛОЕ((A1-ДАТА(1970;1;1))*86400)
Обратно (из timestamp в дату):
=ДАТА(1970;1;1)+A1/86400