Работа с датами в Microsoft Excel — одна из самых востребованных задач среди аналитиков, бухгалтеров и менеджеров проектов. Нужно ли вам рассчитать срок выполнения задачи, определить стаж сотрудника или проанализировать временные интервалы между событиями — без умения вычислять разницу между датами не обойтись. Однако даже опытные пользователи иногда сталкиваются с неожиданными результатами: вместо корректного количества дней Excel выдаёт странные числа, ошибки #ЗНАЧ! или просто неверные значения.
Причина кроется в том, что Excel хранит даты не как текст, а как серийные числа (начиная с 1 января 1900 года), и неправильное форматирование ячеек или выбор функции может исказить итоговый расчёт. В этой статье мы разберём 5 надёжных способов найти разницу между датами — от элементарного вычитания до сложных формул с учётом рабочих дней, месяцев и лет. Вы узнаете, как избежать типичных ошибок и автоматизировать расчёты даже для больших массивов данных.
Особое внимание уделим нюансам:
- 🔹 Почему простая формула
=B2-A2иногда даёт сбой - 🔹 Как учитывать только рабочие дни (исключая выходные и праздники)
- 🔹 В чём разница между функциями
ДАТАРАЗНиРАЗНДАТ - 🔹 Как преобразовать результат из дней в годы, месяцы или часы
1. Простое вычитание дат: базовый метод
Самый очевидный способ найти разницу между двумя датами — вычесть одну из другой. Если в ячейке A2 у вас начальная дата, а в B2 — конечная, достаточно ввести формулу:
=B2-A2
Excel автоматически вернёт количество дней между этими датами.
Однако здесь есть два подводных камня:
- Если ячейки отформатированы как текст (а не как дата), Excel вернёт ошибку или некорректное число. Всегда проверяйте формат через
Главная → Формат → Формат ячеек → Дата. - Результат по умолчанию отображается в днях. Чтобы преобразовать его в месяцы или годы, потребуется дополнительная формула (об этом — в следующих разделах).
Пример: если в A2 указана дата 01.01.2023, а в B2 — 15.03.2023, формула вернёт 73 (количество дней между этими датами).
2. Функция РАЗНДАТ: универсальный инструмент
Функция РАЗНДАТ (англ. DATEDIF) — это скрытая "жемчужина" Excel, которой нет в списке мастер-функций, но она работает во всех версиях программы. Её синтаксис:
=РАЗНДАТ(начальная_дата; конечная_дата; единица_измерения)
Где единица_измерения может принимать значения:
- 📅
"d"— дни - 📆
"m"— полные месяцы - 🗓️
"y"— полные годы - 🔄
"ym"— месяцы без учёта лет - 🔙
"yd"— дни без учёта лет - 🔀
"md"— дни без учёта месяцев и лет
Важно: функция РАЗНДАТ не поддерживает отрицательные значения. Если начальная дата позже конечной, Excel вернёт ошибку #ЧИСЛО!. Чтобы этого избежать, используйте конструкцию с ЕСЛИ:
=ЕСЛИ(B2>A2; РАЗНДАТ(A2; B2; "d"); РАЗНДАТ(B2; A2; "d") & " (обратный отсчёт)")
Пример расчёта стажа сотрудника:
| Начальная дата | Конечная дата | Формула | Результат |
|---|---|---|---|
| 05.11.2018 | 10.05.2026 | =РАЗНДАТ(A2; B2; "y") | 5 (полных лет) |
| 05.11.2018 | 10.05.2026 | =РАЗНДАТ(A2; B2; "ym") | 6 (месяцев сверх полных лет) |
| 05.11.2018 | 10.05.2026 | =РАЗНДАТ(A2; B2; "md") | 5 (дней сверх полных месяцев) |
Почему РАЗНДАТ отсутствует в списке функций?
Функция РАЗНДАТ — это наследие старых версий Lotus 1-2-3. Microsoft сохранила её для совместимости, но не документирует официально. Она работает во всех версиях Excel, включая Excel 365 и Excel 2019, но не отображается в мастер-функций (Формулы → Вставить функцию).
3. Функция ДАТАРАЗН: альтернатива с гибкими настройками
Функция ДАТАРАЗН (англ. DAYS в новых версиях) возвращает количество дней между двумя датами, но в отличие от РАЗНДАТ, она:
- 🔧 Поддерживает отрицательные значения (если конечная дата раньше начальной).
- 📊 Точнее учитывает високосные годы.
- 🔍 Легче вводится через мастер-функций (
Формулы → Дата и время → ДАТАРАЗН).
Синтаксис:
=ДАТАРАЗН(конечная_дата; начальная_дата)
Пример: чтобы узнать, сколько дней осталось до конца проекта (дедлайна в ячейке C2), используйте:
=ДАТАРАЗН(C2; СЕГОДНЯ())
⚠️ Внимание: функцияСЕГОДНЯ()пересчитывается при каждом открытии файла. Если вам нужно зафиксировать текущую дату, используйтеCTRL+;(горячие клавиши для вставки статической даты).
Для преобразования дней в годы или месяцы комбинируйте ДАТАРАЗН с делением:
=ДАТАРАЗН(B2; A2)/365 // Приблизительное количество лет
Но помните: такой расчёт неточен из-за разного количества дней в месяцах и високосных годах. Для точного результата лучше использовать РАЗНДАТ с параметром "y".
4. Учёт рабочих дней: функция ЧИСТРАБДНИ
Если вам нужно посчитать только рабочие дни (исключая субботы, воскресенья и праздники), используйте функцию ЧИСТРАБДНИ (англ. NETWORKDAYS). Её синтаксис:
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
Необязательный параметр [праздники] — это диапазон ячеек с датами нерабочих дней (например, государственные праздники).
Пример: рассчитаем количество рабочих дней между 01.01.2026 и 31.01.2026, исключая новогодние каникулы (с 01.01 по 08.01):
=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; D2:D9)
Где D2:D9 — диапазон с датами праздников.
Для учёта часов между датами (например, для табеля рабочего времени) комбинируйте ЧИСТРАБДНИ с умножением:
=ЧИСТРАБДНИ(A2; B2) * 8 // Количество рабочих часов (при 8-часовом дне)
Создать список праздничных дней в отдельном диапазоне|Проверить формат дат (должен быть "Дата")|Учесть региональные особенности (в некоторых странах выходные — пятница и суббота)|Использовать абсолютные ссылки на диапазон праздников (например, $D$2:$D$9)-->
5. Разница в месяцах и годах: точные расчёты
Для вычисления разницы в месяцах или годах с учётом календарных особенностей (например, 31 января минус 1 месяц = 31 декабря, а не 30 ноября) используйте комбинацию функций:
=ГОД(B2)-ГОД(A2)-ЕСЛИ(ИЛИ(МЕСЯЦ(B2)<МЕСЯЦ(A2); И(МЕСЯЦ(B2)=МЕСЯЦ(A2); ДЕНЬ(B2)<ДЕНЬ(A2))); 1; 0)
Эта формула вернёт полное количество лет между датами, учитывая дни и месяцы.
Для месяцев аналогично:
=РАЗНДАТ(A2; B2; "m")
Но помните: РАЗНДАТ с параметром "m" возвращает полные месяцы, игнорируя дни. Например, разница между 31.01.2026 и 01.03.2026 составит 1 месяц (а не 2), потому что 31 февраля не существует.
Если вам нужно округлённое количество лет (например, для расчёта стажа "по полугодиям"), используйте:
=ОКРУГЛВВЕРХ(РАЗНДАТ(A2; B2; "d")/365; 1)
6. Распространённые ошибки и как их избежать
Даже простые расчёты с датами могут давать сбои. Вот топ-5 ошибок и их решения:
- Ошибка #ЗНАЧ!: возникает, если одна из ячеек содержит текст вместо даты. Проверьте формат через
Формат ячеек → Датаили используйте=ДАТАЗНАЧ(A2)для преобразования текста в дату. - Некорректное количество дней: если вычитаете даты в формате
дд.мм.гггг, но результат отрицательный, поменяйте местами ячейки или используйтеАБС():=АБС(B2-A2) - Проблемы с 1900 годом: Excel считает
01.01.1900за "нулевую" дату, но в реальности этот день не существовал (ошибка Lotus 1-2-3). Чтобы избежать путаницы, используйте даты не раньше01.01.1901. - Високосные годы: функции вроде
=ДАТАРАЗН/365дают погрешность. Для точного расчёта лет используйтеРАЗНДАТс параметром"y". - Региональные настройки: если даты отображаются как
мм/дд/ггггвместодд.мм.гггг, измените параметры системы (Файл → Параметры → Язык → Региональные параметры).
⚠️ Внимание: при копировании дат из внешних источников (например, с сайтов) Excel может распознать их как текст. Чтобы исправить это, выделите диапазон и выполните Данные → Текст по столбцам → Готово (без изменения параметров).
FAQ: Частые вопросы о разнице дат в Excel
Как посчитать разницу между датой и временем (например, 10.05.2026 14:30 и 12.05.2026 09:15)?
Используйте простое вычитание, но убедитесь, что обе ячейки отформатированы как Дата и время. Результат будет в днях с дробной частью (например, 2,71875 — это 2 дня и 17 часов 15 минут). Чтобы преобразовать дробь в часы, умножьте на 24:
= (B2-A2)*24 // Разница в часах
Почему функция РАЗНДАТ возвращает #ИМЯ? вместо результата?
Это означает, что Excel не распознаёт название функции. Возможные причины:
- 🔹 Опечатка в названии (правильно:
РАЗНДАТ, а неРАЗНИЦАДАТ). - 🔹 Используется нерусская версия Excel (в английской версии функция называется
DATEDIF). - 🔹 Ячейки отформатированы как текст (проверьте через
Формат ячеек).
Решение: введите функцию вручную или используйте альтернативу — ДАТАРАЗН.
Можно ли посчитать разницу между датами в разных временных зонах?
Excel не поддерживает временные зоны напрямую. Чтобы учесть разницу, сначала приведите обе даты к одной временной зоне:
- Добавьте или вычтите часы (например, для перевода из UTC+3 в UTC+0:
=A2-ВРЕМЯ(3;0;0)). - Используйте функцию
ЧАСдля корректировки:=B2-A2+ВРЕМЯ(разница_в_часах;0;0).
Для автоматизации создайте отдельную ячейку с разницей временных зон.
Как посчитать количество кварталов между двумя датами?
Используйте комбинацию функций ГОД и МЕСЯЦ:
= (ГОД(B2)-ГОД(A2))*4 + ОКРУГЛВВЕРХ(МЕСЯЦ(B2)/3;0) - ОКРУГЛВВЕРХ(МЕСЯЦ(A2)/3;0)
Эта формула вернёт количество полных кварталов между датами.
Почему при копировании формулы с датами результат не меняется?
Скорее всего, в формуле используются абсолютные ссылки (например, $A$2 вместо A2). Чтобы ссылки автоматически обновлялись при копировании:
- 🔹 Уберите знак
$(нажмитеF4, чтобы переключить тип ссылки). - 🔹 Проверьте, не заблокированы ли ячейки (вкладка
Рецензирование → Защитить лист).