Как вычислить в Excel количество дней между датами: от базовых формул до продвинутых приёмов

Почему вычисление разницы между датами в Excel — это не так просто, как кажется

На первый взгляд, подсчёт количества дней между двумя датами в Microsoft Excel или Google Таблицах кажется тривиальной задачей: взял две ячейки с датами, вычел одну из другой — и готово. Но на практике пользователи сталкиваются с массой подводных камней: от некорректного отображения результата до ошибок при работе с високосными годами или временными зонами. Например, если просто вычесть 01.01.2026 из 31.12.2023, Excel может вернуть отрицательное число, хотя логически разница должна быть положительной.

Ещё одна распространённая проблема — учёт рабочих и выходных дней. Бухгалтерам, логистам и HR-специалистам часто нужно посчитать не календарные дни, а именно рабочие, исключая субботы, воскресенья и праздники. Стандартное вычитание дат здесь не поможет. К тому же, в разных странах разные праздничные календари, что усложняет задачу. Эта статья поможет разобраться во всех нюансах — от базовых формул до продвинутых функций с учётом специфических требований.

Способ 1: Простое вычитание дат (самый быстрый метод)

Если вам нужно узнать общее количество дней между двумя датами без учёта выходных или праздников, достаточно воспользоваться элементарной арифметикой. Excel хранит даты в виде последовательных чисел (начиная с 1 для 1 января 1900 года), поэтому их можно вычитать как обычные числа.

Формула выглядит так:

=Конечная_дата - Начальная_дата

Пример: если в ячейке A1 указана дата 15.05.2026, а в B120.05.2026, формула =B1-A1 вернёт 5 (количество дней между ними). Важно: результат будет в формате числа, но если ячейка отформатирована как "Дата", Excel может отобразить его как дату 05.01.1900. Чтобы этого избежать, предварительно установите для ячейки с результатом формат "Общий" или "Числовой".

  • ✅ Преимущества: максимальная простота, работает во всех версиях Excel.
  • ⚠️ Ограничения: не учитывает рабочие/выходные дни, может давать отрицательные значения, если начальная дата позже конечной.
  • 🔄 Альтернатива: если даты введены как текст (например, "15 мая"), используйте =ДАТАЗНАЧ(B1)-ДАТАЗНАЧ(A1).

Способ 2: Функция DATEDIF — скрытая мощь Excel

Функция DATEDIF (от англ. Date Difference) — одна из самых полезных, но при этом скрытых в официальной документации Microsoft. Она позволяет вычислять разницу между датами не только в днях, но и в месяцах или годах, с учётом различных единиц измерения. Синтаксис:

=DATEDIF(начальная_дата; конечная_дата; единица_измерения)

Аргумент единица_измерения может принимать следующие значения:

ПараметрОписаниеПример результата
"D"Полное количество дней=DATEDIF("01.01.2026"; "31.01.2026"; "D") → 30
"M"Полное количество месяцев=DATEDIF("01.01.2026"; "01.03.2026"; "M") → 2
"Y"Полное количество лет=DATEDIF("01.01.2020"; "01.01.2026"; "Y") → 4
"YM"Месяцы без учёта лет=DATEDIF("01.01.2023"; "15.03.2026"; "YM") → 2
"MD"Дни без учёта месяцев и лет=DATEDIF("01.01.2026"; "15.01.2026"; "MD") → 14

Особенность DATEDIF: она корректно обрабатывает високосные годы. Например, разница между 28.02.2023 и 01.03.2026 составит 366 дней (2026 год — високосный). Однако функция не учитывает временные зоны, поэтому для международных расчётов её лучше комбинировать с =ЧАСОВОЙПОЯС().

📊 Какой способ вычисления дней между датами вы используете чаще?
Простое вычитание
Функция DATEDIF
Функция РАЗНДАТ
Другие формулы
Не знаю, как это делать

Способ 3: Функция РАЗНДАТ — аналог DATEDIF для русскоязычных пользователей

В локализованных версиях Excel (например, русскоязычной) функция DATEDIF может не работать из-за особенностей перевода. Вместо неё используется РАЗНДАТ — полный аналог с идентичным синтаксисом, но на русском языке:

=РАЗНДАТ(начальная_дата; конечная_дата; единица_измерения)

Аргументы единица_измерения те же: "Д" для дней, "М" для месяцев, "Г" для лет и т.д. Пример:

=РАЗНДАТ("10.05.2026"; "25.05.2026"; "Д")

Результат: 15 (дни между 10 и 25 мая). Обратите внимание, что в русскоязычной версии Excel разделителем аргументов функции является ;, а не , как в английской.

⚠️ Внимание: Если при использовании РАЗНДАТ Excel выдаёт ошибку #ИМЯ?, проверьте регистр букв в единице измерения. Параметры должны быть в верхнем регистре (например, "Д", а не "д").
  • 📅 Подходит для: пользователей русскоязычных версий Excel 2007–2023.
  • 🔄 Альтернатива: если РАЗНДАТ не работает, попробуйте =ДЕНЬ360() для приблизительных расчётов.
  • ⚡ Совет: Для удобства создайте именованный диапазон с единицами измерения (например, Дни="Д") и ссылайтесь на него в формуле.

Способ 4: Подсчёт рабочих дней с функцией ЧИСТРАБДНИ

Для расчёта только рабочих дней (исключая субботы, воскресенья и праздники) в Excel предусмотрена функция ЧИСТРАБДНИ. Её синтаксис:

=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])

Необязательный аргумент [праздники] — это диапазон ячеек с датами праздников, которые также нужно исключить. Пример:

=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; D1:D10)

Где D1:D10 — список праздников (например, 1–8 января в России).

Если праздников нет, третий аргумент можно опустить:

=ЧИСТРАБДНИ("01.05.2026"; "10.05.2026")

Результат: 6 (с 1 по 10 мая 2026 года при 5-дневной рабочей неделе).

⚠️ Внимание: Функция ЧИСТРАБДНИ считает субботу и воскресенье выходными по умолчанию. Если у вас другой график (например, скользящие выходные), используйте ЧИСТРАБДНИ.INTL с указанием параметра выходных дней.

Создать список праздников в отдельном диапазоне|Проверить формат дат в ячейках|Указать корректный диапазон праздников в формуле|Применить формат "Общий" к ячейке с результатом-->

Способ 5: Продвинутые приёмы — учёт временных меток и негативных значений

Если ваши даты содержат не только дату, но и время (например, 15.05.2026 14:30), простое вычитание или DATEDIF вернёт дробное число, где целая часть — дни, а дробная — доля дня. Чтобы получить только целые дни, используйте функцию =ЦЕЛОЕ():

=ЦЕЛОЕ(B1-A1)

Для учёта негативных значений (когда начальная дата позже конечной) оберните формулу в =АБС():

=АБС(DATEDIF(A1; B1; "D"))

Это гарантирует, что результат всегда будет положительным, независимо от порядка дат.

Если нужно посчитать дни между сегодняшней датой и какой-либо прошлой/будущей датой, используйте =СЕГОДНЯ():

=DATEDIF("01.01.2026"; СЕГОДНЯ(); "D")

Эта формула автоматически обновляется при каждом открытии файла.

Как учитывать летнее/зимнее время?

Excel не учитывает переход на летнее/зимнее время автоматически, так как оперирует только календарными датами без привязки к временным зонам. Если вам нужно точное количество часов с учётом перехода, используйте комбинацию функций =ЧАС() и =МИНУТЫ() для корректировки разницы. Например, для Москвы разница между 25.10.2026 (переход на зимнее время) и 30.10.2026 будет на 1 час больше, чем календарные 5 дней.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel иногда сталкиваются с ошибками при работе с датами. Вот самые распространённые:

  1. Ошибка #ЗНАЧ!: возникает, если одна из ячеек содержит текст вместо даты. Проверьте формат ячеек (Ctrl+1) и при необходимости используйте =ДАТАЗНАЧ() для преобразования.
  2. Отрицательные значения: если конечная дата раньше начальной, результат будет отрицательным. Используйте =АБС() или поменяйте местами даты.
  3. Некорректный учёт високосных лет: функции DATEDIF и РАЗНДАТ справляются с этим автоматически, но если вы используете ручные расчёты, не забудьте про 29 февраля.
  4. Проблемы с временными зонами: Excel не учитывает часовые пояса. Для международных расчётов приведите все даты к одному поясу (например, UTC).

Ещё одна частая проблема — автоматическое преобразование дат. Например, если ввести 01-02-2026, Excel может интерпретировать это как 1 февраля или 2 января в зависимости от региональных настроек. Чтобы избежать путаницы, используйте формат ДД.ММ.ГГГГ или функцию =ДАТА():

=ДАТА(2026; 5; 15)

FAQ: Ответы на частые вопросы

Можно ли посчитать дни между датами в Google Таблицах?

Да, все описанные методы работают и в Google Таблицах, включая DATEDIF (в англоязычной версии) или РАЗНДАТ (в русскоязычной). Синтаксис идентичен Excel, но разделителем аргументов функции всегда является запятая (,), а не точка с запятой.

Как посчитать количество недель между датами?

Разделите количество дней на 7. Например: =DATEDIF(A1; B1; "D")/7. Для целых недель используйте =ЦЕЛОЕ(DATEDIF(A1; B1; "D")/7). Обратите внимание, что остаток дней (например, 3 дня из 10) будет отброшен.

Почему функция DATEDIF не работает в моём Excel?

Вероятные причины:

  1. Вы используете русскоязычную версию — попробуйте РАЗНДАТ.
  2. Опечатка в единице измерения (должно быть "D", "M" или "Y" в верхнем регистре).
  3. Ячейки с датами отформатированы как текст. Используйте =ДАТАЗНАЧ() для преобразования.
Как посчитать дни между датами с учётом только рабочих часов?

Для этого нужно:

  1. Вычислить общее количество дней (=B1-A1).
  2. Умножить на 24 (часы в день) и вычесть нерабочие часы. Например, при 8-часовом рабочем дне: =(B1-A1)*8.
  3. Исключить выходные с помощью ЧИСТРАБДНИ.

Пример полной формулы: =ЧИСТРАБДНИ(A1; B1)*8 + ЕСЛИ(ИЛИ(ДЕНЬНЕД(A1;2)>5; ДЕНЬНЕД(B1;2)>5); 0; МИН(МОД(B1;1); МОД(A1;1))*24) (учитывает часы в первый и последний день).

Можно ли автоматически обновлять разницу между датой и сегодняшним днём?

Да, используйте функцию =СЕГОДНЯ() в комбинации с DATEDIF:

=DATEDIF("01.01.2026"; СЕГОДНЯ(); "D")

Чтобы формула обновлялась при каждом открытии файла, перейдите в Файл → Параметры → Формулы и установите режим вычислений "Автоматически".