Функции даты и времени в Excel: полный список с примерами и нюансами

Microsoft Excel предлагает более 20 специализированных функций для работы с датами и временем — от базовых операций вроде получения текущей даты до сложных вычислений разницы между временными интервалами. Эти инструменты незаменимы для финансового анализа, управления проектами, логистики и даже личного планирования. Но как не потеряться в многообразии синтаксиса и нюансов?

В этой статье мы разберём все функции Excel категории "Дата и время", сгруппируем их по назначению, покажем реальные примеры применения и предупредим о типичных ошибках. Вы узнаете, как автоматически рассчитывать рабочие дни, конвертировать текстовые даты в числовые форматы, а также избегать подводных камней при работе с временными зонами. Особое внимание уделим функциям, которые часто путают — например, ДАТАЗНАЧ() и ДАТА(), или РАЗНДАТ() и простое вычитание дат.

Базовые функции: текущая дата, время и их компоненты

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

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

  • 📅 СЕГОДНЯ() / TODAY() — возвращает текущую дату (без времени). Формат: =СЕГОДНЯ(). Обновляется автоматически.
  • ТДАТВР() / NOW() — текущие дата и время. Формат: =ТДАТВР(). Точность до секунды.
  • 📆 ГОД() / YEAR() — извлекает год из даты. Пример: =ГОД("15.03.2026") вернёт 2026.
  • 🗓️ МЕСЯЦ() / MONTH() — номер месяца (1–12). Полезно для группировки данных по кварталам.
  • 🔢 ДЕНЬ() / DAY() — день месяца (1–31). Часто используется для расчёта дней до события.
⚠️ Внимание: Функции СЕГОДНЯ() и ТДАТВР() не фиксируются при копировании как значения. Если вам нужна статичная дата (например, дата создания отчёта), используйте комбинацию Ctrl + ; (вставка текущей даты) или =ДАТА(2026;3;15).

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

=ГОД(СЕГОДНЯ()) - ГОД([@[Дата_рождения]]) - ЕСЛИ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ([@[Дата_рождения]]);ДЕНЬ([@[Дата_рождения]])) > СЕГОДНЯ();1;0)

Эта формула учитывает, прошёл ли уже день рождения в текущем году.

📊 Какую функцию из этой группы вы используете чаще всего?
СЕГОДНЯ()
ТДАТВР()
ГОД()/МЕСЯЦ()/ДЕНЬ()
Другую
Не использую

Создание и преобразование дат

Иногда даты хранятся в неудобном формате — например, как текст ("15 марта 2026") или как отдельные столбцы (день, месяц, год). Для их конвертации в полноценные даты Excel предлагает специализированные функции.

Ключевая среди них — ДАТА(), которая собирает дату из трёх чисел (год, месяц, день). Её часто комбинируют с ДАТАЗНАЧ(), преобразующей текстовые даты в числовой формат. Например, =ДАТАЗНАЧ("15.03.2026") вернёт серийный номер даты, который Excel использует для вычислений.

ФункцияСинтаксисПримерРезультат
ДАТА()ДАТА(год;месяц;день)=ДАТА(2026;3;15)15.03.2026
ДАТАЗНАЧ()ДАТАЗНАЧ(текст_даты)=ДАТАЗНАЧ("15-мар-2026")45350 (серийный номер)
ДЕНЬНЕД()ДЕНЬНЕД(дата;[тип_возврата])=ДЕНЬНЕД("15.03.2026";2)5 (пятница)
НОМНЕДЕЛИ()НОМНЕДЕЛИ(дата;[тип_возврата])=НОМНЕДЕЛИ("15.03.2026";21)11

Важно: функция ДАТАЗНАЧ() распознаёт даты только в форматах, поддерживаемых региональными настройками Excel. Например, "15.03.2026" сработает для России, а "03/15/2026" — для США. Если дата не распознаётся, функция вернёт ошибку #ЗНАЧ!.

Полезный приём: чтобы быстро преобразовать столбец текстовых дат в числовой формат, используйте ТЕКСТ.ПОСЛЕ() (для новых версий Excel) или комбинацию ДАТАЗНАЧ() + ПОДСТАВИТЬ() для приведения к стандартному формату.

Расчёт разницы между датами

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

Простое вычитание (=B1-A1) возвращает разницу в днях, но только если ячейки отформатированы как даты. Функция РАЗНДАТ() гибче — она позволяет получить результат в годах, месяцах или днях, но имеет недокументированный статус (не отображается в мастер-функций).

  • 📅 РАЗНДАТ() — расчёт разницы в годах, месяцах или днях. Синтаксис: =РАЗНДАТ(нач_дата;кон_дата;"ед_измерения"), где "ед_измерения" может быть:
    • "y" — полные годы;
    • "m" — полные месяцы;
    • "d" — дни;
    • "ym" — месяцы без учёта лет;
    • "yd" — дни без учёта лет;
    • "md" — разница в днях без учёта месяцев и лет.
  • ДНИ() — разница в днях между двумя датами. Проще, чем РАЗНДАТ, но менее гибко.
  • 🔄 ДНИ360() — расчёт дней по "банковскому" методу (360 дней в году). Используется в финансовых вычислениях.

Пример: чтобы узнать, сколько полных лет прошло с даты найма сотрудника (ячейка A2), используйте:

=РАЗНДАТ(A2;СЕГОДНЯ();"y")
⚠️ Внимание: Функция РАЗНДАТ() может давать неожиданные результаты при работе с отрицательными интервалами (когда конечная дата раньше начальной). Например, =РАЗНДАТ("31.12.2026";"01.01.2026";"m") вернёт #ЧИСЛО!, хотя логично ожидать "-11". В таких случаях используйте условную конструкцию ЕСЛИ() для проверки порядка дат.

Проверьте формат ячеек с датами (должен быть "Дата")

Убедитесь, что начальная дата <= конечной (или используйте АБС())

Для РАЗНДАТ() используйте кавычки для единиц измерения ("y", "m", "d")

Если результат отрицательный, добавьте ЕСЛИОШИБКА() для обработки-->

Работа с рабочими днями и праздничными календарями

Для бизнес-задач часто требуется учитывать только рабочие дни, исключая выходные и праздники. В Excel для этого есть две функции: РАБДЕНЬ() и ЧИСТРАБДНИ(). Первая возвращает дату через заданное количество рабочих дней, вторая — количество рабочих дней между двумя датами.

Особенность этих функций — поддержка пользовательского списка праздников. Например, вы можете исключить не только субботу-воскресенье, но и 1 мая, 9 мая и т.д. Для этого нужно передать диапазон с датами праздников в третий аргумент.

  • 🏢 РАБДЕНЬ() — возвращает дату, отстоящую на N рабочих дней от начальной. Пример: =РАБДЕНЬ("15.03.2026";10) вернёт дату через 10 рабочих дней (исключая выходные).
  • 📊 ЧИСТРАБДНИ() — количество рабочих дней между двумя датами. Синтаксис: =ЧИСТРАБДНИ(нач_дата;кон_дата;[праздники]).
  • 🎉 Праздники — можно указать как диапазон ячеек (например, A1:A10), так и массив констант: {"01.01.2026";"07.01.2026"}.

Пример с праздничными днями:

=ЧИСТРАБДНИ("01.03.2026";"31.03.2026";{"08.03.2026";"15.03.2026"})

Эта формула вернёт количество рабочих дней в марте 2026 года, исключая 8 марта (праздник) и 15 марта (дополнительный выходной).

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

Как создать динамический календарь праздников?

1. Создайте лист "Праздники" и перечислите даты в столбце A.

2. В основной таблице используйте именованный диапазон: выделите столбец с праздниками и введите имя (например, "Праздники") в поле имен (слева от строки формул).

3. В формулах ссылайтесь на именованный диапазон: =ЧИСТРАБДНИ(A1;B1;Праздники).

4. При обновлении праздников достаточно добавить новую дату в лист "Праздники" — все формулы обновятся автоматически.

Время: расчёты и преобразования

Функции для работы со временем в Excel позволяют извлекать часы, минуты, секунды, а также выполнять арифметические операции с временными интервалами. Главная особенность — Excel хранит время как долю суток (например, 12:00 — это 0.5, так как прошла половина дня).

Для корректной работы с временем важно помнить о формате ячеек: если ячейка отформатирована как "Общий", время будет отображаться как десятичная дробь (например, 0.75 вместо 18:00). Используйте формат "Время" или пользовательский формат вроде ч:мм:сс.

  • ЧАС() — возвращает час из времени (0–23). Пример: =ЧАС("15:30:45") → 15.
  • ⏱️ МИНУТЫ() — минуты (0–59). Полезно для округления времени до ближайших 15 минут.
  • ⏲️ СЕКУНДЫ() — секунды (0–59). Часто используется в тайм-трекинге.
  • 🕒 ВРЕМЯ() — создаёт время из часов, минут, секунд. Синтаксис: =ВРЕМЯ(часы;минуты;секунды).
  • 🔄 ВРЕМЗНАЧ() — преобразует текстовое время в числовой формат. Пример: =ВРЕМЗНАЧ("15:30") → 0.645833.

Практический пример: допустим, у вас есть время начала и конца задачи, и нужно рассчитать продолжительность в часах с точностью до двух знаков после запятой. Формула:

=ТЕКСТ(кон_время - нач_время;"[ч]:мм:сс") * 24

Множитель * 24 конвертирует доли суток в часы. Формат "[ч]:мм:сс" позволяет корректно отображать интервалы длительнее 24 часов.

⚠️ Внимание: При вычитании времени Excel может вернуть отрицательное значение, если конечное время раньше начального (например, задача началась в 22:00 и закончилась в 2:00 следующего дня). Чтобы избежать ошибок, используйте:

=ЕСЛИ(кон_время < нач_время; 1 + кон_время - нач_время; кон_время - нач_время)

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

Для сложных задач стандартных функций может быть недостаточно. Рассмотрим несколько продвинутых техник:

  1. Работа с временными зонами: Excel не поддерживает временные зоны напрямую, но их можно эмулировать. Например, чтобы прибавить 3 часа к времени (перевод в другую зону), используйте:
    =ВРЕМЯ(ЧАС(A1)+3; МИНУТЫ(A1); СЕКУНДЫ(A1))

    Для корректной обработки перехода через полночь добавьте проверку:

    =ЕСЛИ(ЧАС(A1)+3 >= 24; ВРЕМЯ(ЧАС(A1)-21; МИНУТЫ(A1); СЕКУНДЫ(A1)); ВРЕМЯ(ЧАС(A1)+3; МИНУТЫ(A1); СЕКУНДЫ(A1)))
  2. Округление времени: Чтобы округлить время до ближайших 15 минут, используйте:
    =ОКРУГЛ(А1*"24*60"/15;0)*(15/24/60)

    Здесь время сначала конвертируется в минуты, округляется до кратных 15, а затем обратно преобразуется в формат времени.

  3. Динамические даты: Для создания "плавающих" дат (например, "первый понедельник месяца") комбинируйте функции:
    =ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());1) - ДЕНЬНЕД(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());1);3) + 1

    Эта формула вернёт дату первого понедельника текущего месяца.

Power Query (доступен в Excel 2016+) значительно расширяет возможности работы с датами. Например, с его помощью можно:

  • Автоматически распознавать даты в нестандартных форматах (например, "15мар2026").
  • Извлекать день недели, квартал или номер недели в году за один клик.
  • Создавать пользовательские столбцы с разницей между датами в любых единицах (недели, кварталы).

Типичные ошибки и их решения

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

ОшибкаПричинаРешение
#ЗНАЧ!Excel не распознаёт текст как датуИспользуйте ДАТАЗНАЧ() или ПОДСТАВИТЬ() для приведения к стандартному формату
#ЧИСЛО!Некорректный аргумент (например, месяц = 13)Проверьте диапазоны: год (1900–9999), месяц (1–12), день (1–31)
Некорректная разница датЯчейки отформатированы как текст, а не датаИзмените формат ячеек на "Дата" или используйте ДАТАЗНАЧ()
Отрицательное времяКонечное время раньше начальногоДобавьте 1 к результату (например, =ЕСЛИ(B1)
Дробные дни в разницеExcel хранит даты как числа (1 = 1 день)Отформатируйте ячейку как "Общий" или умножьте на 24 для перевода в часы

Особое внимание уделите региональным настройкам: в американском Excel по умолчанию используется формат месяц/день/год (например, 03/15/2026 = 15 марта), а в российском — день.месяц.год. Это может приводить к ошибкам при импорте данных. Чтобы избежать путаницы, используйте:

  • Явное указание формата: =ДАТАЗНАЧ("15.03.2026") вместо =ДАТАЗНАЧ("03/15/2026").
  • Функцию ТЕКСТ() для приведения к единому формату: =ТЕКСТ(ДАТАЗНАЧ(A1);"дд.мм.гггг").

Если вы работаете с данными из внешних источников (например, выгружаете отчёты из 1С), проверяйте формат дат до импорта в Excel. Часто даты экспортируются как текст в формате YYYY-MM-DD, который Excel распознаёт корректно.

FAQ: Ответы на частые вопросы

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

Используйте функцию ЧИСТРАБДНИ():

=ЧИСТРАБДНИ(A1;B1)

Где A1 — начальная дата, B1 — конечная. По умолчанию исключаются суббота и воскресенье. Чтобы добавить праздничные дни, укажите их в третьем аргументе:

=ЧИСТРАБДНИ(A1;B1;{"01.01.2026";"07.01.2026"})
Почему функция РАЗНДАТ() не отображается в списке функций Excel?

Функция РАЗНДАТ() (или DATEDIF в английской версии) является "унаследованной" от Lotus 1-2-3 и не документирована в новых версиях Excel. Однако она по-прежнему работает. Чтобы её использовать:

  1. Введите формулу вручную (начиная со знака =).
  2. Или добавьте её в Пользовательские функции через VBA.

Синтаксис: =РАЗНДАТ(нач_дата;кон_дата;"ед_измерения"), где "ед_измерения" может быть "y", "m", "d" и их комбинации.

Как прибавить к дате 3 месяца, чтобы получить корректный результат (например, 31 января + 3 месяца = 30 апреля)?

Используйте функцию ДАТАМЕС() (требует подключения надстройки Пакет анализа или Power Query):

=ДАТАМЕС(A1;3)

Эта функция автоматически корректирует день, если в целевом месяце меньше дней (например, 31 января + 1 месяц = 28 февраля).

Альтернатива без надстроек:

=ЕСЛИОШИБКА(ДАТА(ГОД(A1);МЕСЯЦ(A1)+3;ДЕНЬ(A1));ДАТА(ГОД(A1);МЕСЯЦ(A1)+4;0))
Можно ли в Excel автоматически обновлять дату при каждом открытии файла?

Да, для этого используйте функции СЕГОДНЯ() или ТДАТВР(). Они пересчитываются при:

  • Открытии файла;
  • Изменении любой ячейки;
  • Ручном пересчёте (F9).

Если нужно зафиксировать дату однократно (например, дату создания отчёта), используйте:

  • Комбинацию клавиш Ctrl + ; (вставка статичной даты);
  • Формулу =ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());ДЕНЬ(СЕГОДНЯ())), а затем Копировать → Специальная вставка → Значения.
Как конвертировать дату из текстового формата "15 марта 2026 года" в нормальный формат даты?

Используйте комбинацию функций ДАТАЗНАЧ() и ПОДСТАВИТЬ():

=ДАТАЗНАЧ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" года";"");"марта";".03.");" ";""))

Для автоматизации лучше использовать Power Query:

  1. Импортируйте данные в Power Query (Данные → Получить данные → Из таблицы/диапазона).
  2. Выделите столбец с датами, нажмите Преобразовать → Формат даты/времени → Использовать локаль.
  3. Выберите язык (например, "Русский (Россия)") и формат даты.

Это позволит распознать даты в любом текстовом формате без ручного редактирования формул.