DATEDIF в Excel: как точно считать разницу между датами

Почему считать даты вручную неудобно: семидневная неделя, месяцы разной длины и високосные годы делают простую арифметику ненадёжной. К счастью, Excel умеет считать разницу правильно — и одна из ключевых функций для этого — DATEDIF.
Что такое DATEDIF и зачем она нужна
DATEDIF — встроенная функция Excel, специально созданная для расчёта разницы между двумя датами. Она возвращает количество дней, месяцев или лет между датами в зависимости от выбранной единицы.
Определение в одно предложение: DATEDIF(start_date, end_date, unit) вычисляет интервал между start_date и end_date в указанной единице unit.
Синтаксис (формула):
=DATEDIF(start_date, end_date, unit)Аргументы:
- start_date — ранняя (первая) дата.
- end_date — более поздняя (вторая) дата.
- unit — текстовая строка, указывающая единицу результата (например, “Y”, “M”, “D”).
Простой пример, чтобы получить разницу в днях между A1 и B1:
=DATEDIF(A1,B1,"D")Важно: start_date должен быть раньше end_date. Если первый аргумент позже второго, DATEDIF выдаст ошибку.
Единицы измерения в DATEDIF
| Единица | Значение |
|---|---|
| Y | Полное количество лет между датами |
| M | Полное количество месяцев между датами |
| D | Количество дней между датами |
| MD | Количество дней между датами после вычитания полных лет и месяцев |
| YM | Количество полных месяцев после вычитания полных лет |
| YD | Количество дней между датами, если считать их в рамках одного года |
Примечание: в составных единицах первая буква указывает, какие единицы игнорируются при подсчёте, а вторая — какую величину возвращать.
Базовые сценарии: дни, недели, месяцы, годы
Для простого сравнения двух дат в днях используйте DATEDIF с “D” или функцию DAYS:
=DATEDIF(A2,B2,"D")
=ДНИ(B2;A2) /* в русской локали Excel есть функция ДНИ */Чтобы получить количество недель, разделите дни на 7. Если вам нужны только целые недели — используйте INT или ROUNDDOWN:
=DATEDIF(A2,B2,"D")/7 /* возвращает дробное число недель */
=INT(DATEDIF(A2,B2,"D")/7) /* целое число полных недель */Пример: между 17 марта 2021 и 20 мая 2023 ровно 2 года, 2 месяца и 3 дня (то есть 794 дня). Целых недель в этом периоде: INT(794/7)=113.
Советы по форматам ячеек:
- Даты должны быть в формате даты. Excel воспринимает их как числа.
- Ячейка с результатом лучше форматировать как “Общий” или “Числовой”, иначе Excel может отобразить ответ как дату.

Как получить комбинированный результат (годы, месяцы, дни)
Иногда нужно не одно число, а читабельный формат типа “2 Years 2 Months 3 Days”. В Excel можно объединить несколько DATEDIF:
=DATEDIF(A2,B2,"Y")&" Years "&DATEDIF(A2,B2,"YM")&" Months "&DATEDIF(A2,B2,"MD")&" Days."На русском интерфейсе формула выглядит так же с единицами в кавычках, но текст в результате можно локализовать:
=DATEDIF(A2,B2,"Y")&" лет "&DATEDIF(A2,B2,"YM")&" мес "&DATEDIF(A2,B2,"MD")&" дн."Ampersand (&) соединяет строки. Первой ставится знак равенства только перед первой функцией.

Совет: при длинных формулах нажмите Alt+Enter в строке формул, чтобы сделать перенос и улучшить читабельность. Если формула часто используется — можно оформить её как LAMBDA и сохранить.
Составные единицы: когда и как применять
- YD: полезна, когда нужно узнать, сколько дней осталось до даты в том же календарном году, игнорируя полные годы.
- YM: возвращает месяцы вне учёта целых лет — удобно для вывода “X лет Y месяцев”.
- MD: даёт остаток в днях после вычитания полных лет и месяцев.

Важно помнить: MD и некоторые составные единицы иногда дают неожиданные результаты в граничных случаях (например, при сравнивании дат в конце месяца с датами в месяцах разной длины). Всегда проверяйте выборочные примеры при внедрении в шаблоны.
Альтернативные подходы и когда их применять
- Простая разница дней: B2-A2 (или функция ДНИ/DAYS) — быстро и понятно.
- Рабочие дни (без выходных): NETWORKDAYS(start,end,[holidays]) — считает только рабочие дни.
- Дробные годы: YEARFRAC(start,end,[basis]) — возвращает долю года, удобно для процентов и амортизации.
- INT(DATEDIF(…)/7) — для целых недель.
- LAMBDA — если нужна переиспользуемая кастомная функция для команды.
Примеры:
=NETWORKDAYS(A2,B2) /* рабочие дни между датами */
=YEARFRAC(A2,B2) /* доля года */
=DAYS(B2,A2) /* альтернативный синтаксис */Типичные ошибки и подводные камни
- Перепутанные аргументы (start_date > end_date) — DATEDIF вернёт ошибку.
- MD и другие составные единицы могут вести себя неинтуитивно при концах месяцев.
- Формат ячейки с результатом случайно остаётся как «Дата» — тогда вы увидите странное отображение.
- Разница в локалях: в русской Excel функции и разделители аргументов могут называться иначе (например, ДНИ вместо DAYS; разделитель аргументов — точка с запятой в некоторых локализациях).
Решения:
- Всегда проверяйте несколько примеров с известными ответами.
- Используйте простые тестовые пары дат: одинаковая дата, даты с разницей один день, конец/начало месяца, високосный год.
Критерии приёмки (как проверить, что формула работает)
- Тест 1: start_date = end_date -> результат D = 0, Y = 0, M = 0.
- Тест 2: соседние даты (например, 28.02.2020 и 01.03.2020) -> корректная обработка високосного года.
- Тест 3: переход через год (например, 31.12.2021 и 01.01.2022) -> YD и MD дают ожидаемые значения.
- Тест 4: рабочие дни с праздником -> NETWORKDAYS учитывает дополнительный список праздников.
Быстрый справочник (cheat sheet) — формулы и шаблоны
- Разница в днях:
=DATEDIF(A2,B2,"D")
=DAYS(B2,A2)- Разница в месяцах или годах:
=DATEDIF(A2,B2,"M") /* месяцы */
=DATEDIF(A2,B2,"Y") /* годы */- Целые недели:
=INT(DATEDIF(A2,B2,"D")/7)- Читабельный формат “X лет Y мес Z дн”:
=DATEDIF(A2,B2,"Y")&" лет "&DATEDIF(A2,B2,"YM")&" мес "&DATEDIF(A2,B2,"MD")&" дн."- Рабочие дни:
=NETWORKDAYS(A2,B2) /* без учёта праздников */
=NETWORKDAYS(A2,B2,HolidaysRange) /* с учётом праздников */Роль-ориентированные чеклисты
Для аналитика данных:
- Проверить формат ячеек как “Дата”.
- Сравнить DATEDIF с DAYS и простым вычитанием на контрольных наборах.
- Автоматизировать тесты (несколько кейсов) в отдельном листе.
Для HR (возраст сотрудников):
- Используйте комбинацию Y, YM, MD для выдачи возрастов в формате “X лет Y мес”.
- Учитывайте дату найма и конец расчётного периода.
Для менеджера проектов:
- Для дедлайнов используйте DATEDIF для расчёта оставшегося времени.
- Для рабочих дней — NETWORKDAYS.
Пример практического использования: шаг за шагом
- Убедитесь, что в A2 и B2 форматы — “Дата”.
- В C2 введите:
=DATEDIF(A2,B2,"Y")— количество полных лет. - В D2 введите:
=DATEDIF(A2,B2,"YM")— дополнительные месяцы. - В E2 введите:
=DATEDIF(A2,B2,"MD")— остаток в днях. - В F2 объедините:
=C2&" лет "&D2&" мес "&E2&" дн."
Проверьте результат на контрольных данных: даты с известной разницей.

Мини-методология: как выбирать единицу
- Нужны точные дни — используйте “D”.
- Хотите целые месяцы или годы — “M” или “Y”.
- Для читаемого формата используйте комбинацию Y + YM + MD.
- Для рабочих дней — NETWORKDAYS.
- Для финансовых расчётов с дробью года — YEARFRAC.
Ментальные модели и эвристики
- “Даты — это числа”: думайте о датах как о последовательных числах; Excel так и делает.
- “Отнимай полные единицы последовательно”: сначала года, затем месяцы, затем дни (это логика Y, YM, MD).
- “Проверяй крайние случаи”: конец февраля, високосный год, конец месяца.
Примеры, где DATEDIF не подходит (контрпримеры)
- Если нужно посчитать рабочие (без выходных) или банковские дни — используйте NETWORKDAYS.
- Если требуется дробная доля года (например, 2.58 года) для процентов — YEARFRAC лучше.
- Если start_date > end_date и вы хотите отрицательный результат — DATEDIF не вернёт корректный отрицательный интервал.
Тесты и приёмка (короткие тест-кейсы)
- Одинаковые даты -> 0 дней.
- 28.02.2020 -> 01.03.2020 -> корректный учёт 2020 как високосного.
- 31.01.2021 -> 28.02.2021 -> проверка MD и YM.
1‑строчная глоссарий
- DATEDIF — функция Excel, возвращающая интервал между двумя датами в указанной единице (Y, M, D, MD, YM, YD).
Факты и числа (fact box)
- 1 неделя = 7 дней.
- 1 год = 12 месяцев.
- Високосный год добавляет 1 день (29 февраля) примерно каждые 4 года, что влияет на расчёт дней.
Визуальная помощь: как выбрать метод (Mermaid)
flowchart TD
A[Нужно сравнить даты?] --> B{Требуется рабочие дни?}
B -- Да --> C[NETWORKDAYS]
B -- Нет --> D{Нужен читабельный формат?}
D -- Да --> E[DATEDIF Y + YM + MD]
D -- Нет --> F{Хотите дробные годы?}
F -- Да --> G[YEARFRAC]
F -- Нет --> H[DATEDIF с нужной единицей 'D/M/Y']Короткая инструкция по миграции (советы при переносе шаблонов)
- Проверяйте локализацию функций (ДНИ vs DAYS, разделители аргументов).
- Убедитесь, что формат дат совпадает по всем листам.
- Добавьте контрольный лист с тестами для автоматической валидации формул после миграции.

Короткое резюме и рекомендации
- Используйте DATEDIF для большинства задач по разнице между датами; она простая и понятная.
- Для специальных требований (рабочие дни, дробные годы, кастомные правила) применяйте NETWORKDAYS, YEARFRAC или LAMBDA.
- Всегда прогоняйте тестовые кейсы с известными результатами и учитывайте локализацию Excel.
Важно: перед автоматизацией в производственных шаблонах пройдите базовую валидацию формул на контрольных данных.
Ключевые действия прямо сейчас:
- Протестируйте DATEDIF на трёх парах дат (одна и та же дата, соседние даты, межвисокосный переход).
- Если нужно считать рабочие дни — переходите на NETWORKDAYS и заведите таблицу праздников.
- Сохраните часто используемые сочетания как LAMBDA-функции для повторного использования.
Похожие материалы
CSS font-family: как менять шрифты на сайте
График амортизации кредита в Excel — пошагово
Разгон Raspberry Pi 4 — безопасный пошаговый гид
Как запустить Windows 11 на Mac — варианты и советы
Мошенничество с возвратом средств через техподдержку