15+ функций Excel для работы с датами: от форматирования до сложных вычислений

Microsoft Excel — это не просто таблицы с числами. Когда речь заходит о датах, программа превращается в мощный инструмент для анализа временных рядов, планирования проектов и даже финансового моделирования. Но majority пользователей используют лишь 10% возможностей: вводят даты вручную, а для вычислений ограничиваются простым вычитанием. Между тем, в Excel скрыто более 20 специализированных функций, которые умеют извлекать день недели, считать разницу в годах с учётом високосных, автоматически обновлять текущую дату и даже работать с временными метками до миллисекунд.

Почему это важно? Даты — это особый тип данных, который Excel хранит как числа (количество дней с 1 января 1900 года). Без понимания этой логики вы рискуете получить ошибки при сортировке, фильтрации или построении графиков. Например, почему формула =ДАТА(2026;13;1) не выдаёт ошибку, а возвращает 01.01.2026? Или как правильно посчитать возраст человека, если в расчёте участвует 29 февраля? В этой статье разберём все функции для работы с датами — от базовых до малоизвестных, с примерами, типичными ошибками и лайфхаками для автоматизации рутинных задач.

1. Базовые функции: ДАТА, СЕГОДНЯ, ТДАТА

Начнём с азов. Эти три функции лежат в основе 80% операций с датами в Excel. Без них не обойтись, если вы работаете с отчётами, где важна актуальность данных или нужно генерировать динамические диапазоны.

Функция ДАТА (=DATE() в английской версии) создаёт дату из трёх компонентов: года, месяца и дня. Синтаксис прост: =ДАТА(год; месяц; день). Особенность в том, что Excel автоматически корректирует неверные значения. Например:

  • 📅 =ДАТА(2026; 15; 1) → вернёт 01.03.2026 (15 месяцев = 1 год и 3 месяца).
  • 📅 =ДАТА(2026; 2; 30) → вернёт 01.03.2026 (в феврале 28/29 дней, поэтому переносит на март).
  • 📅 =ДАТА(2026; -1; 15) → вернёт 15.11.2023 (отрицательный месяц сдвигает дату назад).

Функция СЕГОДНЯ (=TODAY()) возвращает текущую дату и обновляется при каждом пересчёте листа. Это идеальный инструмент для:

  • 📊 Отслеживания просроченных задач (например, =ЕСЛИ(A2<СЕГОДНЯ(); "Просрочено"; "")).
  • 📈 Построения динамических графиков с актуальными данными.
  • 📅 Автоматического заполнения отчётов (например, "Отчёт за период с 1.01.2026 по СЕГОДНЯ()").
⚠️ Внимание: СЕГОДНЯ() не обновляется в реальном времени — только при открытии файла или принудительном пересчёте (F9). Если вам нужны секунды, используйте =ТДАТА() (=NOW()).

Функция ТДАТА (=NOW()) похожа на СЕГОДНЯ, но добавляет текущее время. Полезна для:

  • ⏱️ Логов изменений (например, =ТДАТА() & " — данные обновлены").
  • 📉 Расчёта времени выполнения задач (например, =ТДАТА()-A2, где A2 — время начала).
📊 Какую базовую функцию вы используете чаще?
ДАТА
СЕГОДНЯ
ТДАТА
Не использую

2. Извлечение компонентов даты: ДЕНЬ, МЕСЯЦ, ГОД

Часто нужно вытащить из даты отдельный элемент — например, узнать год для группировки данных или день недели для планирования. Для этого есть три функции:

  • 📅 =ДЕНЬ(дата) (=DAY()) — возвращает день месяца (1–31).
  • 📅 =МЕСЯЦ(дата) (=MONTH()) — возвращает месяц (1–12).
  • 📅 =ГОД(дата) (=YEAR()) — возвращает год (например, 2026).

Пример: если в ячейке A1 дата 15.05.2026, то:

  • =ДЕНЬ(A1)15.
  • =МЕСЯЦ(A1)5.
  • =ГОД(A1)2026.

Эти функции незаменимы для:

  • 📊 Сводных таблиц с группировкой по годам/месяцам.
  • 📈 Фильтрации данных по кварталам (например, =ЕСЛИ(МЕСЯЦ(A1)<=3; "Q1"; ...)).
  • 📅 Автоматического заполнения шапок отчётов (например, "Отчёт за =ГОД(СЕГОДНЯ()) год").

А что если нужно узнать день недели? Здесь поможет функция =ДЕНЬНЕД(дата; [тип_возврата]) (=WEEKDAY()). Параметр [тип_возврата] определяет формат результата:

Тип возвратаЗначениеПример для 15.05.2026 (среда)
1 или опущен1 (воскресенье) – 7 (суббота)4
21 (понедельник) – 7 (воскресенье)3
30 (понедельник) – 6 (воскресенье)2
⚠️ Внимание: В Excel для Mac система счёта дней недели может отличаться! Всегда проверяйте результат на тестовой дате.

3. Расчёт разницы между датами: РАЗНДАТ

Одна из самых востребованных операций — вычисление интервала между двумя датами. Например, сколько дней осталось до дедлайна или сколько лет человеку. Для этого есть функция =РАЗНДАТ(нач_дата; кон_дата; единица) (=DATEDIF()). Третий аргумент определяет единицу измерения:

  • 📅 "d" — дни.
  • 📅 "m" — полные месяцы.
  • 📅 "y" — полные годы.
  • 📅 "ym" — месяцы без учёта лет.
  • 📅 "yd" — дни без учёта лет.
  • 📅 "md" — дни без учёта месяцев и лет.

Примеры:

  • =РАЗНДАТ("1.01.2000"; "1.01.2026"; "y")24 (полных года).
  • =РАЗНДАТ("15.05.2026"; СЕГОДНЯ(); "d") → количество дней с 15 мая.
  • =РАЗНДАТ("1.01.2020"; "15.05.2026"; "ym")4 (месяцы сверх полных лет).

Функция РАЗНДАТ — единственная в Excel, которая корректно учитывает високосные годы при расчёте разницы в днях. Например, между 28.02.2020 и 28.02.2026 ровно 4 года, но количество дней будет 1461 (а не 1460), потому что 2020 год — високосный.

Альтернативный способ — простое вычитание дат: =кон_дата - нач_дата. Результат будет в днях. Чтобы перевести в годы, разделите на 365 (но это не учитывает високосные!).

Убедитесь, что обе даты в одном формате (ДД.ММ.ГГГГ)

Проверьте результат на тестовых датах (например, 29.02.2020 и 29.02.2026)

Используйте РАЗНДАТ для точных расчётов с месяцами/годами

Для дней достаточно простого вычитания

-->

4. Работа с временными метками: ВРЕМЯ, ЧАС, МИНУТА, СЕКУНДЫ

Excel умеет работать не только с датами, но и со временем — вплоть до миллисекунд. Это полезно для:

  • ⏱️ Учёта рабочего времени сотрудников.
  • 📊 Анализа логов с временными метками.
  • 📈 Построения графиков активности по часам.

Функция ВРЕМЯ (=TIME()) создаёт временную метку из часов, минут и секунд: =ВРЕМЯ(часы; минуты; секунды). Например:

  • =ВРЕМЯ(9; 30; 0)09:30:00.
  • =ВРЕМЯ(25; 0; 0)01:00:00 (25 часов = 1 день и 1 час).

Чтобы извлечь компоненты времени, используйте:

  • =ЧАС(время) (=HOUR()) — часы (0–23).
  • =МИНУТА(время) (=MINUTE()) — минуты (0–59).
  • =СЕКУНДЫ(время) (=SECOND()) — секунды (0–59).

Для расчёта разницы во времени просто вычтите одну метку из другой. Например, если в A1 время начала 09:00, а в B1 — окончания 17:30, то =B1-A1 вернёт 08:30. Чтобы перевести это в часы, умножьте на 24:

= (B1 - A1) * 24  → 8,5 (часов)
⚠️ Внимание: Если результат отображается как дата (например, 31.12.1899), измените формат ячейки на Время или Общий.

5. Продвинутые функции: ДАТАМЕС, КОНМЕСЯЦА, РАБДЕНЬ

Эти функции решают специфические задачи, которые невозможно выполнить стандартными методами. Они экономят часы ручной работы при анализе временных рядов.

Функция ДАТАМЕС (=EDATE()) добавляет заданное количество месяцев к дате. Синтаксис: =ДАТАМЕС(нач_дата; месяцы). Примеры:

  • =ДАТАМЕС("31.01.2026"; 1)29.02.2026 (январь → февраль, корректирует день).
  • =ДАТАМЕС("15.05.2026"; -3)15.02.2026 (вычитание месяцев).

Эта функция незаменима для:

  • 📅 Расчёта дат платежей по кредитам/абонементам.
  • 📊 Прогнозирования продаж на несколько месяцев вперёд.
  • 📈 Построения графиков с ежемесячными интервалами.

Функция КОНМЕСЯЦА (=EOMONTH()) возвращает последний день месяца, отстоящего на заданное количество месяцев от начальной даты. Синтаксис: =КОНМЕСЯЦА(нач_дата; месяцы). Примеры:

  • =КОНМЕСЯЦА("15.05.2026"; 0)31.05.2026.
  • =КОНМЕСЯЦА("15.05.2026"; 1)30.06.2026.

Функция РАБДЕНЬ (=WORKDAY()) рассчитывает дату через заданное количество рабочих дней, исключая выходные и праздники. Синтаксис: =РАБДЕНЬ(нач_дата; дни; [праздники]). Пример:

  • =РАБДЕНЬ("01.05.2026"; 10)15.05.2026 (10 рабочих дней с 1 мая, учитывая выходные).

6. Преобразование текста в дату и обратно

Часто данные импортируются в Excel в текстовом формате (например, "15-05-2026" или "May 15, 2026"). Чтобы работать с ними как с датами, нужно преобразовать формат.

Функция ДАТАЗНАЧ (=DATEVALUE()) преобразует текстовую дату в числовой формат Excel. Примеры:

  • =ДАТАЗНАЧ("15.05.2026")45415 (серийный номер даты).
  • =ДАТАЗНАЧ("15-May-2026") → работает с английским форматом.
⚠️ Внимание: ДАТАЗНАЧ не распознаёт время! Для текста вида "15.05.2026 14:30" используйте =ЗНАЧЕН(ПОДСТАВИТЬ(...)) или разделите дату и время на две ячейки.

Обратная задача — преобразовать дату в текст с заданным форматом — решается функцией =ТЕКСТ(дата; формат) (=TEXT()). Примеры форматов:

  • =ТЕКСТ(СЕГОДНЯ(); "дд.мм.гггг")"15.05.2026".
  • =ТЕКСТ(СЕГОДНЯ(); "дддд, мммм yy")"среда, май 24".
  • =ТЕКСТ(СЕГОДНЯ(); "м/д/гг")"5/15/24" (американский формат).

Для извлечения дня недели в текстовом виде используйте:

=ТЕКСТ(A1; "дддд")  → "понедельник"

=ТЕКСТ(A1; "ддд") → "пн"

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

Работа с датами в Excel чревата ошибками, особенно если не учитывать нюансы форматирования и внутренней логики программы. Вот самые распространённые проблемы:

1. Даты отображаются как числа

Причина: ячейка имеет формат Общий или Числовой. Решение: выделите ячейку → ГлавнаяФормат ячеек → выберите Дата.

2. Ошибка #ЗНАЧ! в функции ДАТАЗНАЧ

Причина: текст не распознаётся как дата. Решение: проверьте разделители (в русском Excel должен быть ., а не - или /) или используйте =ПОДСТАВИТЬ() для замены разделителей.

3. Некорректная разница между датами

Причина: одна из дат в текстовом формате. Решение: преобразуйте обе даты в числовой формат с помощью ДАТАЗНАЧ или -- (двойной унарный минус).

4. Функция РАЗНДАТ возвращает неожиданный результат

Причина: неверный третий аргумент. Решение: всегда проверяйте синтаксис. Например, "md" и "yd" дают разные результаты!

Почему 1900 год в Excel считается високосным?

В Excel 1900 год ошибочно считается високосным (с 29 февраля), хотя на самом деле он не является таковым. Это наследие старой ошибки в Lotus 1-2-3, которую Microsoft сохранила для совместимости. Чтобы избежать проблем, используйте даты начиная с 1901 года или функции, учитывающие эту особенность (например, РАЗНДАТ).

8. Практические примеры: от учёта рабочего времени до анализа продаж

Теория бесполезна без практики. Рассмотрим реальные задачи, которые решаются с помощью функций дат.

Пример 1: Расчёт возраста

Формула: =РАЗНДАТ(дата_рождения; СЕГОДНЯ(); "y"). Но это вернёт только полные годы. Для точного возраста (например, "25 лет 3 месяца 10 дней") используйте:

=РАЗНДАТ(A1; СЕГОДНЯ(); "y") & " лет, " &

РАЗНДАТ(A1; СЕГОДНЯ(); "ym") & " мес, " &

РАЗНДАТ(A1; СЕГОДНЯ(); "md") & " дней"

Пример 2: Автоматическое обновление статуса задачи

Если в A1 дедлайн, а в B1 нужно отобразить статус:

=ЕСЛИ(A1<СЕГОДНЯ(); "Просрочено";

ЕСЛИ(A1=СЕГОДНЯ(); "Сегодня";

"В процессе"))

Пример 3: Анализ продаж по дням недели

Чтобы узнать, в какой день недели продажи максимальны:

  1. Добавьте столбец с днём недели: =ТЕКСТ(A1; "дддд").
  2. Используйте сводную таблицу для группировки данных по этому столбцу.

Пример 4: Расчёт времени выполнения заказа

Если в A1 время создания заказа, а в B1 — время завершения:

=ТЕКСТ(B1-A1; "[ч]:мм")  → "2:30" (2 часа 30 минут)

Часто задаваемые вопросы

Как в Excel посчитать количество дней между двумя датами, исключая выходные?

Используйте функцию =ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники]) (=NETWORKDAYS()). Она автоматически исключает субботу и воскресенье. Для учёта праздников укажите их диапазон третьим аргументом.

Почему формула =ДАТА(2026; 2; 29) работает, а =ДАТА(2023; 2; 29) — нет?

Потому что 2026 год — високосный (29 февраля существует), а 2023 — нет. Excel автоматически корректирует неверные даты: =ДАТА(2023; 2; 29) вернёт 01.03.2023.

Как сложить дату и время в одной ячейке?

Просто добавьте дату и время: =A1 + B1, где A1 — дата, а B1 — время. Затем установите формат ячейки Дата с типом, включающим время (например, 14.03.2001 13:30).

Можно ли в Excel посчитать количество полных недель между датами?

Да, используйте формулу: =ЦЕЛОЕ((кон_дата - нач_дата)/7). Или для точного результата с учётом дней: =РАЗНДАТ(нач_дата; кон_дата; "d")/7.

Как автоматически обновлять дату и время при каждом открытии файла?

Функции СЕГОДНЯ() и ТДАТА() обновляются только при пересчёте листа (открытии файла или нажатии F9). Для принудительного обновления используйте макрос или настройку Параметры → Формулы → Вычисления → Автоматически.