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

Расчёт количества дней между двумя датами — одна из самых востребованных задач в Microsoft Excel и Google Таблицах.hether вы планируете проект, считаете сроки выполнения задач, анализируете временные промежутки в отчётах или просто хотите узнать, сколько дней осталось до важного события, умение работать с датами сэкономит вам часы ручной работы. Однако даже опытные пользователи иногда сталкиваются с нюансами: как исключить выходные, учесть праздники или посчитать только рабочие дни? Эта статья покрывает все сценарии — от простейших вычитаний до продвинутых формул с условным форматированием и пользовательскими функциями VBA.

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

1. Базовый метод: простое вычитание дат

Самый очевидный способ узнать количество дней между двумя датами — вычесть одну из другой. Excel автоматически преобразует разницу в дни, так как хранит даты в виде последовательных чисел (начиная с 1 января 1900 года = 1). Например, если в ячейке A1 указана дата 01.01.2026, а в B110.01.2026, формула =B1-A1 вернёт 9.

Этот метод работает и для обратного порядка (если первая дата позже второй), но результат будет отрицательным. Чтобы избежать минуса, используйте функцию АBS:

=АBS(B1-A1)
  • Плюсы: проще некуда, не требует знания функций.
  • Минусы: не учитывает выходные, праздники или рабочие дни.
  • 🔄 Когда использовать: для быстрых расчётов, где важна только календарная разница (например, срок действия договора).

2. Функция ДАТАРАЗН (DATEDIF): гибкость и точность

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

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

Где единица_измерения может принимать значения:

ПараметрОписаниеПример результата
"D"Количество полных дней=ДАТАРАЗН("01.01.2026"; "10.01.2026"; "D") → 9
"M"Количество полных месяцев=ДАТАРАЗН("01.01.2026"; "10.03.2026"; "M") → 2
"Y"Количество полных лет=ДАТАРАЗН("01.01.2020"; "10.01.2026"; "Y") → 4
"YM"Месяцы без учёта лет=ДАТАРАЗН("01.01.2020"; "10.03.2020"; "YM") → 2
"MD"Дни без учёта месяцев и лет=ДАТАРАЗН("01.01.2026"; "10.01.2026"; "MD") → 9

ДАТАРАЗН незаменима, когда нужно посчитать возраст в годах/месяцах или стаж работы. Например, для расчёта стажа сотрудника с учётом неполных месяцев:

=ДАТАРАЗН(A1; СЕГОДНЯ(); "Y") & " лет, " & ДАТАРАЗН(A1; СЕГОДНЯ(); "YM") & " месяцев, " & ДАТАРАЗН(A1; СЕГОДНЯ(); "MD") & " дней"
📊 Какой способ расчёта дней вы используете чаще?
Простое вычитание
Функция ДАТАРАЗН
ЧИСТРАБДНИ
Другие функции
Не знаю, как это делать

3. Учёт рабочих дней: функции ЧИСТРАБДНИ и РАБДЕНЬ

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

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

Необязательный параметр [праздники] — это диапазон ячеек с датами праздничных дней. Например, если в ячейках D1:D5 перечислены праздники, формула примет вид:

=ЧИСТРАБДНИ(A1; B1; D1:D5)

Для обратной задачи — определения даты через N рабочих дней — используйте РАБДЕНЬ:

=РАБДЕНЬ(начальная_дата; количество_дней; [праздники])
  • 📅 Пример 1: Сколько рабочих дней между 01.01.2026 и 31.01.2026 (без праздников)? =ЧИСТРАБДНИ("01.01.2026"; "31.01.2026") → 23.
  • 🎉 Пример 2: То же самое, но с учётом праздников 1-8 января: =ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; {"01.01.2026";"02.01.2026";...;"08.01.2026"}) → 17.
Как ввести список праздников прямо в формулу?

Вместо ссылки на диапазон ячеек (например, D1:D5) можно перечислить даты прямо в формуле, используя фигурные скобки. Пример: =ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; {"01.01.2026";"07.01.2026";"08.01.2026"})

Обратите внимание: в русскоязычных версиях Excel в качестве разделителя внутри фигурных скобок используется точка с запятой (;), а не запятая!

4. Расчёт дней с учётом выходных по кастомному графику

По умолчанию ЧИСТРАБДНИ считает выходными субботу и воскресенье. Но что если ваша компания работает по другому графику (например, выходные — пятница и суббота)? В этом случае поможет функция ЧИСТРАБДНИ.МЕЖД (или NETWORKDAYS.INTL), где можно задать собственные выходные дни:

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

Параметр [выходные] — это число от 1 до 17 или строка из 7 символов (1 и 0), где каждый символ обозначает день недели (начиная с понедельника). Например:

  • 1 — выходные: суббота, воскресенье (стандарт).
  • 11 — выходные: воскресенье.
  • "0000011" — выходные: суббота, воскресенье.
  • "0000110" — выходные: пятница, суббота.

Пример: Посчитаем рабочие дни между 01.01.2026 и 31.01.2026 для компании с выходными в пятницу и субботу:

=ЧИСТРАБДНИ.МЕЖД("01.01.2026"; "31.01.2026"; "0000110")

Создать список дат начала и конца периода|Определить дни недели для выходных (например, "0000110")|Подготовить список праздников (если нужны)|Проверить формат ячеек с датами (должен быть "Дата")

-->

5. Продвинутые техники: VBA и динамические праздники

Если вам нужно учитывать переменные праздники (например, Пасха или День города, который ежегодно меняет дату), стандартные функции Excel не справятся. Здесь поможет VBA (Visual Basic for Applications). Ниже приведён код функции, которая рассчитывает дату Пасхи по григорианскому календарю:

Function Пасха(Год As Integer) As Date

Dim a As Integer, b As Integer, c As Integer

Dim d As Integer, e As Integer, f As Integer

Dim g As Integer, h As Integer, i As Integer

Dim k As Integer, L As Integer, m As Integer

Dim месяц As Integer, день As Integer

a = Год Mod 19

b = Год \ 100

c = Год Mod 100

d = b \ 4

e = b Mod 4

f = (b + 8) \ 25

g = (b - f + 1) \ 3

h = (19 * a + b - d - g + 15) Mod 30

i = c \ 4

k = c Mod 4

L = (32 + 2 e + 2 i - h - k) Mod 7

m = (a + 11 h + 22 L) \ 451

месяц = (h + L - 7 * m + 114) \ 31

день = ((h + L - 7 * m + 114) Mod 31) + 1

Пасха = DateSerial(Год, месяц, день)

End Function

Чтобы использовать эту функцию:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Вставка → Модуль).
  3. Теперь в Excel можно использовать =Пасха(2026), чтобы получить дату Пасхи в 2026 году.

Список праздников можно автоматически генерировать в отдельном листе, а затем ссылаться на него в ЧИСТРАБДНИ.

6. Условное форматирование для визуализации сроков

Чтобы наглядно отображать истекающие сроки, используйте условное форматирование. Например, можно выделить красным ячейки, где разница между текущей датой и дедлайном меньше 5 дней:

  1. Выделите диапазон с датами дедлайнов (например, B2:B100).
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу: =И(B2-СЕГОДНЯ()<=5; B2-СЕГОДНЯ()>=0).
  5. Задайте красный цвет заливки и нажмите ОК.

Для более сложных сценариев (например, цветовая шкала по срокам) комбинируйте несколько правил:

  • 🟢 Зелёный: =B2-СЕГОДНЯ()>30 (срок более 30 дней).
  • 🟡 Жёлтый: =И(B2-СЕГОДНЯ()<=30; B2-СЕГОДНЯ()>5).
  • 🔴 Красный: =B2-СЕГОДНЯ()<=5.

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

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

⚠️ Внимание: Если Excel показывает вместо даты набор символов (например, ######), это означает, что ширина столбца слишком мала. Растяните столбец или измените формат ячейки.
ОшибкаПричинаРешение
Формула возвращает #ЗНАЧ!Ячейка содержит текст вместо даты.Проверьте формат ячейки (Формат → Ячейки → Дата).
Некорректный результат в ДАТАРАЗННеправильный порядок дат (начальная позже конечной).Используйте АBS или поменяйте даты местами.
ЧИСТРАБДНИ игнорирует праздникиНеверный формат диапазона праздников.Убедитесь, что праздники введены как даты, а не текст.
VBA-функция не работаетОтключены макросы.Включите макросы в Файл → Параметры → Центр управления безопасностью.
⚠️ Внимание: При копировании формул с датами из интернета замените запятые (,) на точки с запятой (;) — в русскоязычных версиях Excel используется именно этот разделитель.

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

Как посчитать дни между датами, если одна из них пустая?

Используйте функцию ЕСЛИ для проверки заполненности ячейки. Пример:

=ЕСЛИ(И(NOT(ЕПУСТО(A1)); NOT(ЕПУСТО(B1))); B1-A1; "Данные неполные")
Можно ли посчитать дни с учётом полурабочих дней (например, суббота — короткий день)?

Стандартных функций для этого нет, но можно создать пользовательскую функцию на VBA, которая будет присваивать вес каждому дню (например, 1 для полного рабочего дня, 0.5 для короткого).

Как автоматически обновлять расчёты при изменении текущей даты?

Используйте функцию СЕГОДНЯ() — она пересчитывается при каждом открытии файла. Для принудительного обновления нажмите F9.

Почему ДАТАРАЗН не работает в Google Таблицах?

В Google Таблицах нет функции ДАТАРАЗН, но её можно эмулировать комбинацией DATEDIF (работает) или использовать =INT(B1-A1) для дней.

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

Разделите разницу в днях на 7 и округлите вниз с помощью ЦЕЛОЕ:

=ЦЕЛОЕ((B1-A1)/7)