Вычислить количество дней между сегодняшним днем и любой прошлой датой в Microsoft Excel можно за считанные секунды — если знать правильные формулы. Например, чтобы определить, сколько дней прошло с 1 января 2023 года до текущей даты, достаточно одной функции =ТДАТА()-A1, где A1 — ячейка с исходной датой. Но этот метод работает только при корректном формате ячеек: если Excel воспринимает дату как текст, результат будет неверным (ошибка #ЗНАЧ!).
Проблема усложняется, когда нужно учесть рабочие дни (исключая выходные), учитывать праздники или вычислять разницу между двумя произвольными датами. В этой статье разберем 5 проверенных способов — от базовых до продвинутых, — а также типичные ошибки, из-за которых Excel возвращает неверные значения. Например, многие пользователи забывают, что функция ДАТАЗНАЧ преобразует текст в дату только при английском формате (мм/дд/гггг), а в русскоязычной версии требуется ручная настройка.
1. Базовый метод: вычитание дат в Excel
Самый простой способ узнать количество дней между двумя датами — вычесть одну дату из другой. Excel хранит даты как последовательные числа (начиная с 1 января 1900 года), поэтому арифметические операции с ними работают интуитивно. Например, формула =B1-A1 вернет разницу в днях между датами в ячейках A1 и B1.
Чтобы посчитать дни с конкретной даты до сегодняшнего дня, используйте функцию ТДАТА():
=ТДАТА()-A1
⚠️ Внимание: Если результат отображается как дата (например,01.01.1900), измените формат ячейки на Общий или Числовой через контекстное меню (Формат ячеек → Число).
- 📅 Пример 1: В ячейке
A1указана дата15.05.2026. Формула=ТДАТА()-A1вернет количество дней с 15 мая по сегодняшний день. - ⚡ Пример 2: Для разницы между двумя произвольными датами (например,
A1=01.01.2026иB1=31.12.2026) используйте=B1-A1. - 🔄 Ошибка: Если результат отрицательный, значит, вычитаемая дата (
A1) позже текущей. Поменяйте ячейки местами.
2. Функция ДНЕЙ360: расчет по банковским правилам
Функция ДНЕЙ360 используется для финансовых расчетов, где год условно принимается за 360 дней (12 месяцев по 30 дней). Синтаксис:
=ДНЕЙ360(начальная_дата; конечная_дата; [метод])
Аргумент [метод] определяет способ обработки дат (например, ИСТИНА для европейского метода). По умолчанию Excel использует американский метод (ЛОЖЬ).
| Метод | Описание | Пример результата |
|---|---|---|
ЛОЖЬ (или 0) | Американский (NASD). Если начальная дата — 31-е число, она сдвигается на 30-е. | =ДНЕЙ360("31.01.2026";"28.02.2026") → 28 |
ИСТИНА (или 1) | Европейский. Начальные даты 31-е сдвигаются на 30-е, конечные — на 1-е следующего месяца. | =ДНЕЙ360("31.01.2026";"28.02.2026";ИСТИНА) → 28 |
Эта функция полезна для расчета процентов по кредитам или инвестициям, но не подходит для точного подсчета календарных дней. Например, разница между 31.01.2026 и 01.03.2026 по ДНЕЙ360 составит 30 дней, хотя фактически проходит 31 день.
3. Рабочие дни: функция ЧИСТРАБДНИ
Если нужно исключить выходные (субботу и воскресенье) или праздники, используйте ЧИСТРАБДНИ:
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
Аргумент [праздники] — это диапазон ячеек с датами нерабочих дней (например, D1:D10). Если его не указать, учитываются только суббота и воскресенье.
- 🏢 Пример:
=ЧИСТРАБДНИ("01.01.2026";ТДАТА();E1:E5), гдеE1:E5— список праздников (например, 1–8 января). - 📆 Нюанс: Праздники должны быть в формате дат, а не текста. Используйте
ДАТАЗНАЧдля преобразования.
⚠️ Внимание: ФункцияЧИСТРАБДНИ.МЕЖД(в новых версиях Excel) позволяет указать пользовательские выходные дни (например, пятницу и субботу для стран с иным календарем). Синтаксис:=ЧИСТРАБДНИ.МЕЖД(A1;B1;1;E1:E5), где1— код выходных (1 = суббота/воскресенье, 2 = воскресенье/понедельник и т.д.).
1. Убедитесь, что начальная и конечная даты в формате даты (не текст).
2. Праздники перечислены в отдельном столбце (по одной дате в ячейке).
3. Формат праздников совпадает с форматом основных дат (например, дд.мм.гггг).
4. Для старых версий Excel используйте ЧИСТРАБДНИ без аргумента [выходные].
-->
4. Преобразование текста в дату: ДАТАЗНАЧ и альтернативы
Если дата хранится как текст (например, "15 мая 2026" или "15/05/2026"), Excel не сможет вычесть ее из другой даты. Решения:
- Функция
ДАТАЗНАЧ: Работает только с форматоммм/дд/ггггилидд.мм.гггг(в зависимости от региональных настроек).=ДАТАЗНАЧ("15.05.2026")Если возвращает ошибку, измените формат текста на английский (
15/05/2026). - Функция
ДАТА: Для разбора текста по частям (день, месяц, год).=ДАТА(2026; 5; 15) - Текст по столбцам: Используйте инструмент
Данные → Текст по столбцам, чтобы разделить текст на день, месяц, год, а затем собрать дату черезДАТА.
Для дат на русском языке (например, "15 мая 2026") потребуется формула с ПОИСК и ПСТР:
=ДАТА(
ПСТР(A1; ПОИСК(" "; A1; ПОИСК(" "; A1)+1)+1; 4); -- год
ЕСЛИ(ПОИСК("янв"; A1); 1; ЕСЛИ(ПОИСК("фев"; A1); 2; ... )); -- месяц
ЛЕВСИМВ(A1; ПОИСК(" "; A1)-1) -- день
)
Список месяцев для формулы
янв=1, фев=2, мар=3, апр=4, май=5, июн=6, июл=7, авг=8, сен=9, окт=10, ноя=11, дек=12.
5. Динамический расчет: автоматическое обновление
Чтобы количество дней обновлялось автоматически при открытии файла, используйте волатильные функции:
- 🔄
ТДАТА()— возвращает текущую дату и время (обновляется при любом изменении листа). - 📅
СЕГОДНЯ()— возвращает только текущую дату (менее ресурсоемкая).
Пример динамической формулы:
=СЕГОДНЯ()-A1
Чтобы отключить автоматическое обновление (например, для фиксации даты на определенный момент), замените СЕГОДНЯ() на статическое значение:
- Выделите ячейку с формулой.
- Нажмите
F2, затемF9(Excel заменит формулу на результат). - Нажмите
Enter.
⚠️ Внимание: Волатильные функции замедляют работу больших файлов. Если лист содержит тысячи строк сТДАТА()илиСЕГОДНЯ(), замените их на статические значения или используйте Power Query для предварительной обработки.
6. Типичные ошибки и их решения
Даже опытные пользователи сталкиваются с ошибками при работе с датами. Вот самые распространенные:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! | Ячейка содержит текст, а не дату. | Используйте ДАТАЗНАЧ или измените формат ячейки. |
#ИМЯ? | Опечатка в названии функции (например, ТДАТА вместо ТДАТА()). | Проверьте синтаксис и регистр. |
Некорректный результат (например, 45000) | Ячейка отформатирована как дата, а не как число. | Измените формат на Общий или Числовой. |
| Отрицательное число дней | Начальная дата позже конечной. | Поменяйте ячейки местами или используйте АБС: |
Для устранения ошибки #ЗНАЧ! при работе с текстом используйте комбинацию функций:
=ЕСЛИОШИБКА(ДАТАЗНАЧ(A1); "Некорректная дата")
Это позволит избежать сбоев в больших таблицах.
FAQ: Частые вопросы о расчете дней в Excel
Можно ли посчитать дни между датами в Google Таблицах?
Да, синтаксис идентичен Excel. Используйте:
=TODAY()-A1(аналогТДАТА()),=DAYS360(A1; B1)(аналогДНЕЙ360),=NETWORKDAYS(A1; B1)(аналогЧИСТРАБДНИ).
Обратите внимание: в Google Таблицах функция ДАТАЗНАЧ называется DATEVALUE.
Как посчитать количество полных месяцев между датами?
Используйте функцию РАЗНДАТ:
=РАЗНДАТ(A1; B1; "m")
Где "m" — код для месяцев. Для полных лет используйте "y".
⚠️ Внимание: РАЗНДАТ недоступна в мастере функций — ее нужно вводить вручную.
Почему Excel показывает дату как ######?
Это означает, что ширина столбца недостаточна для отображения даты. Растяните столбец или измените формат на Краткий формат даты.
Как посчитать дни с учетом только рабочих часов?
Excel не имеет встроенной функции для расчета рабочих часов, но можно использовать комбинацию:
=ЧИСТРАБДНИ(A1; B1) * 8 + (МИНУТЫ_РАБОТЫ_В_ДЕНЬ)
Где 8 — количество рабочих часов в день. Для точного расчета потребуется VBA-скрипт.
Можно ли посчитать дни между датами в разных книгах Excel?
Да, используйте внешние ссылки. Например:
=ТДАТА()-[Книга2.xlsx]Лист1!$A$1
Убедитесь, что обе книги открыты, иначе ссылка обновится только при следующем открытии.