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 + кон_время - нач_время; кон_время - нач_время)Продвинутые приёмы: временные зоны, округление, динамические даты
Для сложных задач стандартных функций может быть недостаточно. Рассмотрим несколько продвинутых техник:
- Работа с временными зонами: Excel не поддерживает временные зоны напрямую, но их можно эмулировать. Например, чтобы прибавить 3 часа к времени (перевод в другую зону), используйте:
=ВРЕМЯ(ЧАС(A1)+3; МИНУТЫ(A1); СЕКУНДЫ(A1))Для корректной обработки перехода через полночь добавьте проверку:
=ЕСЛИ(ЧАС(A1)+3 >= 24; ВРЕМЯ(ЧАС(A1)-21; МИНУТЫ(A1); СЕКУНДЫ(A1)); ВРЕМЯ(ЧАС(A1)+3; МИНУТЫ(A1); СЕКУНДЫ(A1)))- Округление времени: Чтобы округлить время до ближайших 15 минут, используйте:
=ОКРУГЛ(А1*"24*60"/15;0)*(15/24/60)Здесь время сначала конвертируется в минуты, округляется до кратных 15, а затем обратно преобразуется в формат времени.
- Динамические даты: Для создания "плавающих" дат (например, "первый понедельник месяца") комбинируйте функции:
=ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());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. Однако она по-прежнему работает. Чтобы её использовать:
- Введите формулу вручную (начиная со знака
=).- Или добавьте её в
Пользовательские функциичерез 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:
- Импортируйте данные в Power Query (
Данные → Получить данные → Из таблицы/диапазона).- Выделите столбец с датами, нажмите
Преобразовать → Формат даты/времени → Использовать локаль.- Выберите язык (например, "Русский (Россия)") и формат даты.
Это позволит распознать даты в любом текстовом формате без ручного редактирования формул.