Как пользоваться DATEDIF в Excel — дни, месяцы и годы между датами
Кратко
DATEDIF в Excel быстро считает разницу между двумя датами в днях, месяцах и годах. В этой статье есть синтаксис, подробные примеры, шаблоны формул, типичные ошибки и альтернативные подходы для точных расчётов.
Зачем это нужно
Подсчёт интервалов между датами — частая задача: возраст человека, срок гарантии, период аренды, дедлайн проекта. Ручной расчёт подвержен ошибкам: разная длина месяцев, високосные годы и переходы между годами усложняют счёт. Функция DATEDIF решает эти проблемы и даёт точные целые значения по выбранной единице времени.

Синтаксис DATEDIF
=DATEDIF(start_date, end_date, unit)Где:
- start_date — более ранняя дата.
- end_date — более поздняя дата.
- unit — текстовая строка, указывающая единицу измерения (лет, месяцев, дней или составные варианты).
Простой пример, который возвращает количество дней между датами в ячейках A1 и B1:
=DATEDIF(A1,B1,"D")Важно: start_date должен быть раньше end_date. Если даты перепутаны местами, функция вернёт ошибку.
Единицы измерения (unit)
| Сокращение | Описание |
|---|---|
| Y | Полное число лет между датами |
| M | Полное число месяцев между датами |
| D | Число дней между датами |
| MD | Число дней с вычитанием полных лет и месяцев |
| YM | Число месяцев с вычитанием полных лет |
| YD | Число дней, если считать даты в одном году (исключая полные годы) |
Эти единицы позволяют получать разные представления интервала: общие дни, целые месяцы или комбинированные представления “годы + месяцы + дни”.
Практическое использование: дни, недели, месяцы, годы
Самый простой случай — получить количество дней, месяцев или лет:
=DATEDIF($A$2,$B$2,"D")
=DATEDIF($A$2,$B$2,"M")
=DATEDIF($A$2,$B$2,"Y")Чтобы получить недели, разделите разницу в днях на 7:
=DATEDIF($A$2,$B$2,"D")/7Учтите: это даёт дробное число недель. Если нужно целое число полных недель — используйте функцию INT:
=INT(DATEDIF($A$2,$B$2,"D")/7)Перед применением убедитесь, что ячейки с датами действительно имеют формат «Дата», а ячейка результата — числовой формат.
Составные единицы: MD, YM, YD — что они дают
Составные единицы позволяют вывести интервал, исключив более крупные величины:
- YD считает разницу в днях, предполагая, что даты находятся в одном году (то есть игнорирует целые годы).
- YM считает месяцы, игнорируя целые годы.
- MD считает дни, игнорируя целые месяцы и годы.
Пример: если нужно вывести интервал в виде “X лет Y месяцев Z дней”, комбинируем три вызова 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") & " дн."Для удобства при наборе длинной формулы используйте Alt+Enter в строке формул, чтобы разбить выражение на строки.
Примеры и сценарии применения
- Возраст человека на текущую дату:
=DATEDIF(B2,TODAY(),"Y") & " лет " & DATEDIF(B2,TODAY(),"YM") & " мес."(B2 — дата рождения)
- Срок гарантии в месяцах между датой покупки и датой возврата:
=DATEDIF(A2,B2,"M")- Сколько дней осталось до дедлайна:
=DATEDIF(TODAY(),C2,"D")(C2 — дата дедлайна)
Объединение нескольких DATEDIF в одной формуле
=DATEDIF(A2,B2,"Y") & " лет " & DATEDIF(A2,B2,"YM") & " мес. " & DATEDIF(A2,B2,"MD") & " дн."Если вы часто используете такую комбинацию, можно оформить пользовательскую функцию через LAMBDA (в версиях Excel, где доступна LAMBDA), чтобы вызывать её по имени.
Когда DATEDIF может подвести (примеры ошибок и ограничения)
- Ошибка при перепутанных дат: если start_date позже end_date, функция вернёт ошибку. Проверяйте порядок дат перед вызовом.
- Неправильные форматы: если Excel не распознаёт значение как дату (текст вместо даты), результат будет ошибочным или некорректным.
- Поведение при високосных годах и разных длинах месяцев корректно учитывается, но это может сбивать с толку: MD и YM игнорируют целые месяцы/годы, поэтому воспринимать результаты нужно осознанно.
- DATEDIF не умеет учитывать только рабочие дни. Для рабочих дней используйте NETWORKDAYS или NETWORKDAYS.INTL.
- DATEDIF исторически документирован не во всех версиях Excel. Это не означает, что её нельзя использовать, но будьте осторожны при переносе файлов в старые/редкие сборки.
Альтернативы и дополнения к DATEDIF
- Простое вычитание дат: B2-A2 даёт число дней между датами (если обе ячейки в формате даты).
- YEARFRAC(start,end) возвращает дробное количество лет (полезно для расчёта процентных периодов или амортизации).
- NETWORKDAYS(start,end,holidays) считает рабочие дни, исключая выходные и заданные праздники.
- INT и ROUND можно применять для округления недель и месяцев, если требуется определённый формат вывода.
Мини-руководство: шаблон формул (cheat sheet)
- Дни между датами:
=DATEDIF(A1,B1,"D")- Полные месяцы между датами:
=DATEDIF(A1,B1,"M")- Полные годы между датами:
=DATEDIF(A1,B1,"Y")- Полные недели:
=INT(DATEDIF(A1,B1,"D")/7)- Формат “Y лет M мес. D дн.”:
=DATEDIF(A1,B1,"Y") & " лет " & DATEDIF(A1,B1,"YM") & " мес. " & DATEDIF(A1,B1,"MD") & " дн."- Рабочие дни между датами (с учётом праздников в диапазоне H1:H10):
=NETWORKDAYS(A1,B1,H1:H10)Тесты и критерии приёмки
Критерии приёмки для проверок шаблона “Y лет M мес D дн”:
- Ввод: A1=2020-02-28, B1=2021-03-01 → Ожидаемый вывод: 1 год 0 мес 1 дн (проверить обработку високосного года).
- Перестановка дат: если A1>B1 — формула должна выдавать понятную ошибку или предварительно менять порядок.
- Текстовые даты: если A1 содержит текст “1 марта 2021”, Excel должен распознать или вернуть ошибку формата.
- Пограничные случаи: одинаковые даты → 0 лет 0 мес 0 дн.
Для автоматической проверки добавьте в рабочую таблицу набор контрольных пар и сравните ожидаемое значение с результатом формулы.
Роль-ориентированные чек-листы
- Для HR: используйте шаблон “возраст сотрудника” и проверяйте формат даты рождения при вводе.
- Для бухгалтера: применяйте YEARFRAC при расчётах пропорции оплаты или процентов; используйте NETWORKDAYS для расчёта рабочих дней в расчёте зарплаты.
- Для менеджера проекта: выводите оставшиеся дни до дедлайна с TODAY() и уведомлениями при достижении порога.
Ментальные модели и эвристики
- Даты в Excel — это числа. Вычитание двух дат даёт разницу в днях.
- DATEDIF удобен для «человеческого» вывода (годы/месяцы/дни), а простое вычитание — для быстрых вычислений и графиков.
- Если нужно учитывать только рабочие дни — думайте не о DATEDIF, а о NETWORKDAYS.
Советы по удобству и поддержке формул
- Зафиксируйте ссылки ($A$2) при автозаполнении, если используете опорные даты.
- Для читабельности длинных формул используйте Alt+Enter в строке формул.
- Если делаете шаблон для команды — добавьте контрольные строки с тестовыми парами дат.
- Документируйте, что ваша формула делает (краткая подсказка в комментарии ячейки или отдельная вкладка “Описание”).
Примеры LAMBDA (для продвинутых пользователей)
Если в вашей версии Excel доступна LAMBDA, вы можете обернуть повторяющийся шаблон в функцию:
=LAMBDA(start,end, DATEDIF(start,end,"Y") & " лет " & DATEDIF(start,end,"YM") & " мес. " & DATEDIF(start,end,"MD") & " дн.")Сохраните её в имени функции, например AgeText, и затем вызывайте как:
=AgeText(A2,B2)Короткий глоссарий
- start_date — начальная дата (ранняя).
- end_date — конечная дата (поздняя).
- Y, M, D — целые годы, месяцы, дни.
- YM, MD, YD — составные единицы, исключающие более крупные составляющие.
Риски и рекомендации
- Проверяйте формат ввода: неправильный формат — частая причина ошибок.
- Для совместимости с другими инструментами (Google Sheets, LibreOffice) тестируйте файлы: реализация функций может отличаться.
- Для корпоративных шаблонов добавьте валидацию данных и защиту ячеек, чтобы пользователи не меняли формулы.
Быстрый чек-лист внедрения в шаблон
- Убедитесь, что столбцы с датами имеют формат «Дата».
- Пометьте ячейки с результатом как «Общий» или «Числовой».
- Добавьте примеры и тестовые пары дат.
- Если нужно — реализуйте LAMBDA и документируйте имя функции.
- Защитите формулы от случайного изменения.
Итог
DATEDIF — простой и надёжный инструмент для получения целых интервалов между датами в Excel. Он полезен для HR, бухгалтерии и управления проектами. Комбинируйте Y, YM и MD, чтобы получить читабельный формат «годы, месяцы, дни», используйте NETWORKDAYS для рабочих дней и YEARFRAC для дробных лет. Добавьте тесты и шаблоны в ваш файл, чтобы снизить риск ошибок и упростить поддержку.
Ключевые ресурсы: встроенные функции Excel (DATEDIF, NETWORKDAYS, YEARFRAC), TODAY() для динамических отчётов, LAMBDA для повторного использования логики.
Похожие материалы
Как экономить мобильные данные в Apple Music
Персональные результаты Google Assistant на блокировке
Настройка уведомлений Outlook: отключить и адаптировать
Добавить дату и время в Google Sheets
Таймер Помодоро на Python с Tkinter