Введение: зачем считать дни в Excel и где это применяется
Расчёт разницы между датами в днях — одна из самых востребованных операций в Microsoft Excel. От бухгалтеров, которые считают просроченные платежи, до HR-специалистов, анализирующих отпуска сотрудников, — эта задача возникает в десятках сценариев. Но даже опытные пользователи иногда сталкиваются с неожиданными ошибками: почему формула возвращает отрицательное число, как исключить выходные или учесть только рабочие дни?
В этой статье мы разберём 5 способов посчитать дни между датами — от базовой арифметики до сложных функций с учётом производственного календаря. Вы узнаете, как избежать типичных ошибок (например, с форматом ячеек), как работать с временными метками, и почему иногда проще использовать Power Query, чем формулы. А в конце — FAQ с ответами на самые частые вопросы, включая нюансы для Excel Online и Google Sheets.
Неважно, нужно ли вам посчитать срок исполнения договора, время выполнения задачи или возраст клиента — после прочтения вы сможете сделать это за 2 минуты, не гуглить формулы в интернете.
Способ 1: Базовая формула (простая разница в днях)
Самый очевидный метод — вычесть одну дату из другой. Excel хранит даты как числа (где 1 = 1 января 1900 года), поэтому арифметика работает интуитивно. Формула:
=КОНДАТА - НАЧДАТА
Где:
- 📅
КОНДАТА— ячейка с конечной датой (например,B2) - 📅
НАЧДАТА— ячейка с начальной датой (например,A2)
Пример: если в A2 стоит 15.05.2026, а в B2 — 20.05.2026, формула вернёт 5.
⚠️ Внимание: Если даты введены как текст (например, через копирование из PDF), Excel воспримет их как строки, и формула вернёт ошибку#ЗНАЧ!. Проверьте формат ячеек: выделите диапазон →Главная → Формат → Формат ячеек → Дата.
| Сценарий | Формула | Результат |
|---|---|---|
| Простая разница | =B2-A2 |
5 (дней) |
| Даты в одном столбце (смещение на 1 строку) | =A3-A2 |
7 |
| Разница с сегодняшним днём | =СЕГОДНЯ()-A2 |
12 (актуально на момент расчёта) |
Способ 2: Функция ДНИ (DATEDIF для точности)
Функция ДНИ (англ. DAYS) появилась в Excel 2013 и упрощает синтаксис. Она автоматически игнорирует время, если оно указано в ячейках, и всегда возвращает целое число дней:
=ДНИ(НАЧДАТА; КОНДАТА)
Пример:
=ДНИ("10.01.2026"; "15.01.2026")
Вернёт 5.
Для старых версий Excel (2010 и ранее) используйте DATEDIF — "скрытую" функцию, которую Microsoft не документирует, но она работает:
=DATEDIF(НАЧДАТА; КОНДАТА; "D")
Аргумент "D" означает "days" (дни). Эта функция также поддерживает другие единицы:
- 📆
"M"— полные месяцы между датами - 📅
"Y"— полные годы - 📊
"YM"— месяцы без учёта лет
Почему DATEDIF не в справке Excel?
Функция DATEDIF была добавлена для совместимости с Lotus 1-2-3 и никогда не документировалась официально. Она работает во всех версиях, но Microsoft рекомендует использовать современные альтернативы типа ДНИ.
Способ 3: Учёт только рабочих дней (исключаем выходные)
Если нужно посчитать рабочие дни (например, для расчёта срока доставки или выполнения задачи), используйте функцию ЧИСТРАБДНИ (англ. NETWORKDAYS):
=ЧИСТРАБДНИ(НАЧДАТА; КОНДАТА; [Праздники])
По умолчанию функция считает субботу и воскресенье выходными. Чтобы указать свои выходные (например, пятница и суббота), используйте ЧИСТРАБДНИ.МЕЖД (англ. NETWORKDAYS.INTL):
=ЧИСТРАБДНИ.МЕЖД(НАЧДАТА; КОНДАТА; [Выходные]; [Праздники])
Пример для рабочей недели с понедельника по пятницу (выходные — суббота и воскресенье):
=ЧИСТРАБДНИ.МЕЖД(A2; B2; 1)
Где 1 — код для стандартных выходных (1 = суббота/воскресенье, 2 = воскресенье/понедельник и т.д.). Полный список кодов:
| Код | Выходные дни |
|---|---|
1 |
Суббота, воскресенье |
2 |
Воскресенье, понедельник |
11 |
Только воскресенье |
17 |
Пятница, суббота |
Чтобы исключить праздники, создайте диапазон с датами (например, D2:D10) и укажите его третьим аргументом:
=ЧИСТРАБДНИ(A2; B2; D2:D10)
Способ 4: Расчёт с учётом времени (часы, минуты, секунды)
Если в ваших данных есть не только даты, но и время (например, 15.05.2026 14:30), простая разница вернёт дробное число, где целая часть — дни, а дробная — доля дня. Чтобы разделить дни и время:
- 🕒 Только дни:
=ЦЕЛОЕ(B2-A2) - ⏱️ Только время:
=B2-A2-ЦЕЛОЕ(B2-A2)(вернёт долю дня, например0,5= 12 часов) - 📅 Дни + часы в отдельных ячейках:
=ЦЕЛОЕ(B2-A2) // Дни
=(B2-A2-ЦЕЛОЕ(B2-A2))*24 // Часы
Для преобразования дробной части в минуты или секунды умножайте на 1440 (минуты в дне) или 86400 (секунды).
⚠️ Внимание: При работе с временем убедитесь, что ячейки имеют форматДатаилиОбщий. Если Excel воспринимает время как текст (например,14:30без даты), используйте функциюВРЕМЗНАЧдля преобразования:
=ВРЕМЗНАЧ("14:30")
☑️ Проверка формата даты/времени
Способ 5: Динамический расчёт (с сегодняшней датой)
Чтобы всегда видеть актуальную разницу между датой в ячейке и сегодняшним днём, используйте функцию СЕГОДНЯ (англ. TODAY):
=СЕГОДНЯ()-A2
Эта формула обновится автоматически при каждом открытии файла. Аналогично работает ТДАТА (англ. NOW), но она учитывает ещё и текущее время:
=ТДАТА()-A2
Примеры применения:
- 📦 Срок хранения продукта:
=СЕГОДНЯ()-A2(гдеA2— дата производства) - ⏳ Остаток до дедлайна:
=B2-СЕГОДНЯ()(гдеB2— дата дедлайна) - 📅 Возраст клиента:
=ДНИ(A2; СЕГОДНЯ())/365(приблизительный возраст в годах)
Важно: Функции СЕГОДНЯ и ТДАТА не обновляются вручную — они пересчитываются только при открытии файла или принудительном пересчёте (F9). Если вам нужно зафиксировать текущую дату (например, для отчёта), используйте комбинацию Ctrl + ; (вставит статичную дату).
Распространённые ошибки и как их исправить
Даже в простых расчётах пользователи сталкиваются с ошибками. Вот топ-5 проблем и их решения:
- Ошибка
#ЗНАЧ!
Причина: одна или обе даты введены как текст. Решение: используйте
ДАТАЗНАЧили измените формат ячейки наДата. - Отрицательное число дней
Причина: конечная дата раньше начальной. Решение: поменяйте местами аргументы или используйте
АБС:=АБС(B2-A2) - Неправильный результат из-за времени
Причина: в ячейках есть временная часть (например,
15.05.2026 00:00vs15.05.2026 23:59). Решение: обрежьте время функциейЦЕЛОЕили используйтеДНИ. - Ошибка
#ИМЯ?
Причина: опечатка в названии функции (например,
ДНЕЙвместоДНИ). Решение: проверьте синтаксис. - Некорректный учёт високосных годов
Причина: ручной расчёт дней через умножение на 365. Решение: всегда используйте функции
ДНИилиDATEDIF— они учитывают високосные годы автоматически.
FAQ: Ответы на частые вопросы
Можно ли посчитать дни между датами в Google Sheets?
Да, все описанные функции работают и в Google Sheets, за исключением DATEDIF — там она документирована официально. Синтаксис идентичен, но названия функций на английском:
=DAYS(end_date, start_date)=NETWORKDAYS(start_date, end_date, [holidays])
Как посчитать количество месяцев или лет между датами?
Используйте функцию DATEDIF с другими аргументами:
=DATEDIF(A2; B2; "M") // Месяцы
=DATEDIF(A2; B2; "Y") // Годы
Для точного расчёта с учётом дней (например, "2 года и 3 месяца") комбинируйте:
=DATEDIF(A2; B2; "Y") & " лет и " & DATEDIF(A2; B2; "YM") & " месяцев"
Почему формула =B2-A2 возвращает дату 01.01.1900 вместо числа?
Это означает, что ячейка с результатом имеет формат Дата. Измените формат на Общий или Числовой:
- Выделите ячейку с формулой.
- Нажмите
Ctrl + 1(или правая кнопка →Формат ячеек). - Выберите категорию
Числовой.
Как посчитать дни с учётом только будних дней и праздников?
Создайте список праздников в отдельном диапазоне (например, D2:D10) и используйте:
=ЧИСТРАБДНИ(A2; B2; D2:D10)
Для нестандартных выходных (например, пятница-суббота) применяйте ЧИСТРАБДНИ.МЕЖД:
=ЧИСТРАБДНИ.МЕЖД(A2; B2; 7; D2:D10)
Где 7 — код для выходных "пятница-суббота".
Можно ли автоматически обновлять разницу дней при изменении дат?
Да, если использовать таблицы Excel (не путать с диапазонами). Преобразуйте данные в таблицу (Ctrl + T), и формулы будут автоматически расширяться на новые строки. Также можно использовать Power Query для динамических расчётов:
- Выделите данные →
Данные → Из таблицы/диапазона. - В редакторе Power Query добавьте столбец с формулой (например,
= Date.From([Конечная дата]) - Date.From([Начальная дата])). - Загрузите данные обратно в Excel.