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

Вы когда-нибудь сталкивались с задачей подсчета количества дней между двумя датами в Microsoft Excel? Это одна из самых частых операций при работе с временными данными — от расчета сроков выполнения проектов до определения возраста клиентов или анализа временных интервалов между событиями. На первый взгляд задача кажется простой, но на практике многие пользователи сталкиваются с неожиданными ошибками или не знают о скрытых возможностях программы.

В этой статье мы разберем 5 различных способов вычисления разницы между датами — от базовых формул до продвинутых функций с учетом рабочих дней и праздников. Вы узнаете, как избежать распространенных ошибок при работе с датами в формате ДД.ММ.ГГГГ и ММ/ДД/ГГГГ, почему иногда Excel показывает неверные результаты, и как автоматизировать расчеты для больших массивов данных. Особое внимание уделим скрытому формату хранения дат в Excel, который часто становится причиной ошибок у новичков.

Почему Excel иногда ошибается в расчетах дат

Прежде чем переходить к формулам, важно понять, как Excel внутренне обрабатывает даты. В отличие от привычного нам восприятия, программа хранит каждую дату как порядковый номер, где 1 января 1900 года соответствует числу 1, а 1 января 2026 года — числу 45292. Это означает, что когда вы вводите дату в ячейку, Excel на самом деле работает с ее числовым эквивалентом.

Именно этот механизм лежит в основе всех вычислений с датами. Например, разница между 15.05.2026 и 10.05.2026 вычисляется как разница между их порядковыми номерами: 45415 - 45410 = 5. Однако здесь кроются и потенциальные проблемы:

  • 🔹 Формат ячейки: Если ячейка отформатирована как текст, Excel воспринимает дату как строку, а не как число, что делает невозможными математические операции.
  • 🔹 Региональные настройки: В американской версии Excel по умолчанию используется формат ММ/ДД/ГГГГ, что может привести к путанице (например, 05/06/2026 — это 5 июня или 6 мая?).
  • 🔹 Отрицательные даты: Excel не поддерживает даты до 1900 года в Windows-версии (в Mac-версии нижняя граница — 1904 год).
⚠️ Внимание: Если при вычитании дат вы получаете странное число вроде 44197 вместо ожидаемой разницы в дни, проверьте формат ячеек. Скорее всего, одна из дат сохранена как текст. Исправьте это через меню Главная → Формат → Формат ячеек → Дата.

Чтобы избежать ошибок, всегда проверяйте формат ячеек перед вычислениями. Для этого достаточно выделить ячейку с датой и посмотреть, как она отображается в строке формул: если там виден левый верхний уголок (как у текста), а не выравнивание по правому краю (как у чисел), значит формат неверный.

📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

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

Самый простой способ узнать количество дней между двумя датами — вычесть одну дату из другой. Этот метод работает, потому что, как мы узнали ранее, даты в Excel на самом деле являются числами. Формула выглядит так:

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

Например, если в ячейке A2 у вас дата начала проекта 01.03.2026, а в B2 — дата окончания 15.03.2026, формула будет:

=B2-A2

Результат — 14 дней. Обратите внимание, что:

  • 📅 Формат результата автоматически станет общим (числовым), но вы можете изменить его на Дни через форматирование.
  • ⏳ Если конечная дата раньше начальной, результат будет отрицательным (например, -5 означает, что вторая дата на 5 дней раньше первой).
  • 🔄 Формула учитывает все календарные дни, включая выходные и праздники.
Начальная дата (A2) Конечная дата (B2) Формула Результат
01.01.2026 10.01.2026 =B2-A2 9
15.02.2026 20.02.2026 =B2-A2 5
10.03.2026 05.03.2026 =B2-A2 -5
01.12.2023 31.12.2023 =B2-A2 30
⚠️ Внимание: Если вы копируете даты из внешних источников (например, с сайтов или PDF), они могут вставляться как текст. Чтобы преобразовать их в даты, используйте функцию =ДАТАЗНАЧ или инструмент Текст по столбцам на вкладке Данные.

Убедиться, что обе даты в формате"Дата" (не текст)

Проверить региональные настройки (ДД.ММ.ГГГГ vs ММ/ДД/ГГГГ)

Использовать абсолютные ссылки ($A$2), если формула будет копироваться

При необходимости применить функцию =ДАТАЗНАЧ для текстового формата-->

Способ 2: Функция ДНИ — альтернатива вычитанию

Для тех, кто предпочитает использовать встроенные функции вместо прямого вычитания, в Excel есть специальная функция =ДНИ (англ. DAYS). Она делает то же самое — вычисляет разницу между двумя датами, но может быть удобнее в сложных формулах.

Синтаксис функции:

=ДНИ(конечная_дата; начальная_дата)

Пример использования:

=ДНИ(B2; A2)

Преимущества этого метода:

  • 📊 Читаемость формул: В длинных выражениях явно видно, что вычисляется разница дат.
  • 🔄 Защита от ошибок: Функция автоматически игнорирует время, если оно указано в датах (в отличие от прямого вычитания, где время может искажать результат).
  • 🌍 Международная совместимость: В англоязычных версиях Excel функция называется DAYS, что упрощает работу с международными шаблонами.

Однако есть и ограничение: функция ДНИ появилась только в Excel 2013. Если вы работаете со старой версией (2010 или ранее), придется использовать вычитание или функцию =РАЗНДАТ, о которой поговорим далее.

Способ 3: Функция РАЗНДАТ — расширенные возможности

Функция =РАЗНДАТ (англ. DATEDIF) — это настоящий"швейцарский нож" для работы с датами. Она позволяет вычислять не только дни, но и месяцы или годы между двумя датами. Несмотря на то, что эта функция не документирована в справочной системе Excel, она работает во всех версиях программы, включая Excel 2003.

Синтаксис функции:

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

Где единицы_измерения — это код, определяющий, что именно вы хотите посчитать:

  • "D" — количество дней между датами (включая неполные месяцы).
  • "M" — количество полных месяцев.
  • "Y" — количество полных лет.
  • "YM" — количество месяцев, проигнорировав годы.
  • "MD" — количество дней, проигнорировав месяцы и годы.
  • "YD" — количество дней, проигнорировав годы.

Примеры использования:

Начальная дата Конечная дата Формула Результат Пояснение
01.01.2020 31.12.2023 =РАЗНДАТ(A2;B2;"D") 1459 Всего дней между датами
15.05.2023 20.07.2026 =РАЗНДАТ(A2;B2;"M") 14 Полных месяцев
10.10.2000 10.10.2026 =РАЗНДАТ(A2;B2;"Y") 24 Полных лет
28.02.2026 15.03.2026 =РАЗНДАТ(A2;B2;"MD") 15 Дней без учета месяцев

Особенность функции РАЗНДАТ в том, что она учитывает календарную структуру. Например, разница между 31.01.2026 и 28.02.2026 по параметру"M" будет 0 (нет полного месяца), а по"D" — 28 дней.

⚠️ Внимание: Функция РАЗНДАТ не работает с датами до 1900 года в Windows-версии Excel. Если вам нужно посчитать дни между историческими датами, используйте альтернативные методы (например, преобразование влианские дни).
Почему функция РАЗНДАТ не документирована?

Функция РАЗНДАТ была добавлена в Excel для обеспечения совместимости с Lotus 1-2-3 — популярной электронной таблицей 1980-х годов. Microsoft никогда официально не анонсировала эту функцию, но она продолжает работать во всех версиях Excel, включая последние. Это одна из так называемых"функций-призраков", которые не отображаются в мастер-функциях, но доступны для использования.

Способ 4: Расчет рабочих дней (исключая выходные)

В реальных бизнес-задачах часто требуется посчитать не все календарные дни, а только рабочие — исключая субботы, воскресенья и праздники. Для этого в Excel есть специальная функция =ЧИСТРАБДНИ (англ. NETWORKDAYS).

Базовый синтаксис:

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

Где:

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

Пример 1 (без учета праздников):

=ЧИСТРАБДНИ("01.01.2026";"10.01.2026")

Результат: 7 (из 10 дней исключены 2 выходных — 6 и 7 января).

Пример 2 (с учетом праздников):

=ЧИСТРАБДНИ("01.01.2026";"10.01.2026"; D2:D5)

Где в ячейках D2:D5 перечислены праздники: 01.01.2026, 02.01.2026, 07.01.2026. Результат: 5.

Важные нюансы:

  • 📅 По умолчанию выходными считаются суббота и воскресенье. Если у вас другой график (например, пятница-суббота), используйте функцию =ЧИСТРАБДНИ.МЕЖД (англ. NETWORKDAYS.INTL).
  • 🏢 Функция учитывает только целые дни. Если в датах указано время, оно игнорируется.
  • 🌍 В международных компаниях будьте внимательны: в некоторых странах выходные могут отличаться (например, в ОАЭ — пятница-суббота).

Способ 5: Учет праздников и индивидуальных выходных

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

Синтаксис:

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

Где [выходные] — это число или строка, определяющая, какие дни недели считаются выходными. Например:

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

Пример: расчет рабочих дней для компании с выходными в пятницу и субботу, плюс исключение праздников:

=ЧИСТРАБДНИ.МЕЖД("01.06.2026";"15.06.2026"; 11; E2:E5)

Где в E2:E5 указаны праздники: 12.06.2026 (День России).

Для удобства можно создать отдельную таблицу с кодами выходных:

Код Строка Выходные дни
1 0000011 Суббота, воскресенье
2 0000001 Только воскресенье
3 0000101 Пятница, воскресенье
11 0000110 Пятница, суббота
17 0010001 Среда, воскресенье

Если вам нужно посчитать рабочие часы (а не дни), комбинируйте ЧИСТРАБДНИ.МЕЖД с функцией =ВРЕМЯ или просто умножайте количество рабочих дней на длительность рабочего дня (например, =ЧИСТРАБДНИ.МЕЖД(...) * 8 для 8-часового дня).

Распространенные ошибки и как их избежать

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

  • 🔢 Ошибка #ЗНАЧ! — возникает, если одна из ячеек содержит текст вместо даты. Решение: используйте =ДАТАЗНАЧ или измените формат ячейки на"Дата".
  • 📅 Неправильный порядок дат — если конечная дата раньше начальной, результат будет отрицательным. Решение: используйте =АБС для получения абсолютного значения: =АБС(B2-A2).
  • 🌐 Проблемы с региональными настройками — Excel может воспринимать 05.06.2026 как 5 июня или 6 мая. Решение: явно указывайте формат через =ДАТА: =ДАТА(2026;5;6) для 6 мая.
  • Время в датах — если в ячейках указано время (например, 01.01.2026 14:30), простое вычитание даст дробный результат. Решение: используйте =ЦЕЛОЕ(B2-A2) для округления до дней.
  • 🗓️ 1900 vs 1904 — в Mac-версии Excel по умолчанию используется система дат с 1904 года, что сдвигает все расчеты на 1462 дня. Решение: проверьте настройки в Файл → Параметры → Дополнительно → При переходе на эту книгу: Использовать систему дат 1904.

Если вы работаете с большими массивами данных, рекомендуем использовать Условное форматирование для визуального контроля ошибок. Например, можно выделить красным все ячейки с датами в текстовом формате:

  1. Выделите диапазон с датами.
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите"Использовать формулу для определения форматируемых ячеек".
  4. Введите формулу: =ЕОШИБКА(ДАТАЗНАЧ(A1)) (замените A1 на первую ячейку диапазона).
  5. Задайте красный цвет заполнения и нажмите OK.

Практические примеры использования

Давайте рассмотрим, как применять рассмотренные методы на реальных примерах из разных сфер:

1. Расчет возраста клиентов

Задача: В таблице указаны даты рождения клиентов (столбец A). Нужно посчитать их возраст на текущую дату.

Решение:

=РАЗНДАТ(A2; СЕГОДНЯ;"Y")

Эта формула вернет количество полных лет. Чтобы получить возраст в годах с десятичными (например, 25.3 для 25 лет и 4 месяцев), используйте:

=РАЗНДАТ(A2; СЕГОДНЯ;"Y") + РАЗНДАТ(A2; СЕГОДНЯ;"YM")/12

2. Сроки выполнения задач в проекте

Задача: В проекте есть даты начала (столбец B) и окончания (столбец C) задач. Нужно посчитать длительность в рабочих днях, исключая выходные и праздники (перечислены в столбце E).

Решение:

=ЧИСТРАБДНИ(B2; C2; $E$2:$E$10)

3. Анализ временных интервалов между покупками

Задача: У вас есть история покупок клиента с датами (столбец D). Нужно узнать, сколько дней прошло между первой и последней покупкой.

Решение:

=МАКС(D2:D100) - МИН(D2:D100)

Чтобы посчитать средний интервал между покупками:

=СРЗНАЧ(РАЗНДАТ(D2:D9; D3:D10;"D"))

4. Контроль сроков годности

Задача: На складе хранятся товары с датами производства (столбец F) и сроками годности в днях (столбец G). Нужно выделить просроченные товары.

Решение:

=ЕСЛИ(F2 + G2 < СЕГОДНЯ;"Просрочено";"OK")

5. Планирование графиков дежурств

Задача: Нужно составить график дежурств на месяц (столбец H — даты), исключая выходные (суббота-воскресенье) и праздники (столбец I).

Решение: Используйте ЧИСТРАБДНИ.МЕЖД для подсчета доступных дней, затем распределите дежурства пропорционально.

Эти примеры показывают, как гибко можно применять функции работы с датами в Excel для решения самых разных задач — от HR-аналитики до логистики и финансового планирования.

FAQ: Частые вопросы о расчете дней в Excel

Можно ли в Excel посчитать дни между датами с учетом времени?

Да, но результат будет в дробном формате, где целая часть — дни, а дробная — часть дня. Например, разница между 01.01.2026 14:00 и 02.01.2026 10:00 составит 1.833 дня (22 часа = 0.833 дня). Чтобы получить часы, умножьте дробную часть на 24: =ЦЕЛОЕ(B2-A2) &" дней" & ТЕКСТ((B2-A2)-ЦЕЛОЕ(B2-A2);"ч:мм").

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

Используйте функцию =ЦЕЛОЕ или =ОКРВНИЗ для деления разницы в днях на 7:

=ЦЕЛОЕ((B2-A2)/7)

Для округления вверх (если нужна хотя бы одна неделя):

=ОКРВВЕРХ((B2-A2)/7; 0)
Почему при копировании формулы с датами результат не меняется?

Скорее всего, в формуле используются абсолютные ссылки (со знаком $). Например, =B$2-A$2 всегда будет ссылаться на вторую строку. Исправьте на относительные ссылки: =B2-A2. Если нужно зафиксировать только столбец или строку, используйте смешанные ссылки: =B2-$A$1.

Как посчитать дни между сегодняшним днем и датой в ячейке?

Используйте функцию =СЕГОДНЯ:

=СЕГОДНЯ-A2

Для рабочих дней:

=ЧИСТРАБДНИ(A2; СЕГОДНЯ)

Обратите внимание, что функция СЕГОДНЯ пересчитывается при каждом открытии файла.

Можно ли в Excel посчитать дни между датами в разных временных зонах?

Excel не поддерживает временные зоны напрямую. Чтобы учесть разницу во времени, сначала приведите обе даты к одной временной зоне, добавив или вычтя разницу в часах. Например, если одна дата в UTC+3, а другая в UTC-5, разница составит 8 часов (=1/24*8). Формула будет выглядеть так:

= (B2 + (3/24)) - (A2 + (-5/24))

Где 3/24 и -5/24 — поправки на временные зоны (часы делятся на 24, чтобы получить долю дня).