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

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

К счастью, Excel предлагает несколько способов автоматически определить количество дней в месяце — от элементарных формул до универсальных функций, работающих даже с динамическими данными. В этой статье мы разберем 5 проверенных методов, включая малоизвестные трюки для работы с високосными годами и пользовательскими форматами дат. Вы узнаете, как адаптировать формулы под разные версии Excel (2010–2023, Office 365) и избежать типичных ошибок.

———

1. Самый простой способ: функция ДЕНЬ с автоматическим сдвигом месяца

Если вам нужно быстро узнать количество дней в текущем месяце (например, для отчета), воспользуйтесь комбинацией функций ДЕНЬ() и ДАТА(). Этот метод не требует знания сложных формул и работает даже в старых версиях Excel.

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

=ДЕНЬ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ())+1;1)-1)

Разберем, как она работает:

  • 📅 СЕГОДНЯ() — возвращает текущую дату (например, 15.05.2026).
  • 🔢 ГОД() и МЕСЯЦ() — извлекают год и месяц из этой даты.
  • +1 — сдвигает месяц на единицу вперед (например, май → июнь).
  • 📍 ДАТА(ГОД;МЕСЯЦ+1;1) — создает дату 1 июня 2026.
  • -1 — отнимает 1 день, получая 31 мая 2026.
  • 📊 ДЕНЬ() — извлекает номер дня (31), то есть количество дней в мае.

Чтобы посчитать дни для произвольного месяца (не текущего), замените СЕГОДНЯ() на ячейку с датой. Например, если в A1 записана дата 15.02.2026, формула будет:

=ДЕНЬ(ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;1)-1)

2. Универсальная формула ДАТАМЕС: для любых годов и месяцев

Функция ДАТАМЕС() (англ. EOMONTH) специально создана для работы с концами месяцев. Она возвращает последний день месяца, что идеально подходит для нашей задачи. Синтаксис:

=ДЕНЬ(ДАТАМЕС(дата;0))

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

  • 🗓️ Для текущего месяца: =ДЕНЬ(ДАТАМЕС(СЕГОДНЯ();0)) → вернет 31 (для мая).
  • 📅 Для даты в ячейке A1: =ДЕНЬ(ДАТАМЕС(A1;0)).
  • 🔄 Для следующего месяца: =ДЕНЬ(ДАТАМЕС(СЕГОДНЯ();1)).

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

  • ✅ Работает с любыми датами, включая високосные годы (например, февраль 2026 вернет 29 дней).
  • ✅ Короткий и понятный синтаксис.
  • ✅ Поддерживается во всех версиях Excel начиная с 2007.
⚠️ Внимание: Если в ячейке с датой указан несуществующий день (например, 31.04.2026), Excel автоматически скорректирует его на последний валидный день месяца (30.04.2026). Однако лучше избегать таких ошибок в исходных данных.
📊 Какой метод вы используете чаще для работы с датами в Excel?
Функции ДАТА/ДЕНЬ
ДАТАМЕС (EOMONTH)
Ручной ввод
Другие формулы

3. Альтернативный подход: вычитание дат

Этот метод основан на арифметике дат. Логика проста: если вычесть первое число месяца из первого числа следующего месяца, получим количество дней в текущем месяце. Формула:

=ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;1) - ДАТА(ГОД(A1);МЕСЯЦ(A1);1)

Пример для даты в A1 = 15.03.2026:

  1. ДАТА(2026;4;1)01.04.2026.
  2. ДАТА(2026;3;1)01.03.2026.
  3. 01.04.2026 - 01.03.202631 (дней в марте).

Когда этот метод удобен:

  • 📈 Для создания динамических графиков, где нужно отобразить длительность месяцев.
  • 🔄 При работе с диапазонами дат (например, для расчета средней длины месяца в году).
⚠️ Внимание: Если в формуле указать декабрь (МЕСЯЦ(A1)+1 = 13), Excel автоматически перенесет дату на январь следующего года. Это поведение можно использовать для расчета дней в декабре: =ДАТА(ГОД(A1)+1;1;1) - ДАТА(ГОД(A1);12;1).

4. Продвинутый способ: массив констант для мгновенных расчетов

Если вам нужно мгновенно получить количество дней в месяце без вычислений (например, для оптимизации производительности больших таблиц), используйте массив констант. Этот метод подходит для статических данных, где известны год и месяц.

Формула для месяца в ячейке A1 (число от 1 до 12) и года в B1:

=ВЫБОР(A1;31;ЕСЛИ(И(МОД(B1;4)=0;МОД(B1;100)<>0);29;28);31;30;31;30;31;31;30;31;30;31)

Разбор:

  • 🔢 ВЫБОР(A1;...) — выбирает значение из списка по номеру месяца.
  • 📅 Для февраля (A1=2) используется условие ЕСЛИ для проверки високосного года:
    • МОД(B1;4)=0 — год делится на 4 без остатка.
    • МОД(B1;100)<>0 — год НЕ делится на 100 (исключение для веков, не кратных 400).

Плюсы и минусы метода:

ПреимуществаНедостатки
⚡ Мгновенный расчет без сложных вычислений❌ Не обновляется автоматически при изменении даты
📊 Подходит для больших массивов данных❌ Требует ручного ввода года и месяца
🔒 Надежен для статических отчетов❌ Не учитывает изменения в календаре (например, реформы)
Как работает проверка високосного года в Excel?

Високосный год определяется по правилам:

1. Год делится на 4 без остатка (2026, 2028).

2. Исключение: если год делится на 100 (1900, 2100), он НЕ високосный, кроме случаев, когда делится на 400 (2000, 2400).

Формула ЕСЛИ(И(МОД(B1;4)=0;МОД(B1;100)<>0);29;28) реализует это правило для февраля.

5. Динамический календарь: автоматизация для целого года

Если вам нужно создать таблицу с количеством дней для всех месяцев года, используйте комбинацию функций ДАТА(), ДЕНЬ() и ДАТАМЕС() с автозаполнением. Пример для 2026 года:

В ячейку A1 введите год (например, 2026). В B1:B12 пронумеруйте месяцы от 1 до 12. В C1 введите формулу и протяните вниз:

=ДЕНЬ(ДАТАМЕС(ДАТА($A$1;B1;1);0))

Результат:

МесяцДней в 2026Дней в 2026
Январь3131
Февраль2928
Март3131
Апрель3030
Май3131

Этот метод позволяет сравнивать длительность месяцев в разных годах — например, для анализа сезонности продаж или планирования производственных циклов.

Ввести год в отдельную ячейку (например, A1)

Пронумеровать месяцы от 1 до 12 в столбце B

Ввести формулу с ДАТАМЕС в столбце C

Протянуть формулу на все 12 месяцев

Добавить условное форматирование для високосных годов (необязательно)-->

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

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

  • 🚫 Ошибка #1: Формат ячейки — текст, а не дата.

    Если формула возвращает неверный результат, проверьте формат ячейки с исходной датой. Выделите ячейку → Формат ячеек → выберите Дата.

  • 🚫 Ошибка #2: Использование несуществующих дат (например, 31.04.2026).

    Excel автоматически корректирует такие даты, но это может исказить результаты. Всегда проверяйте исходные данные на валидность.

  • 🚫 Ошибка #3: Забыли учесть високосный год для февраля.

    Используйте ДАТАМЕС() или проверку МОД(), как показано в разделе 4.

  • 🚫 Ошибка #4: Копирование формул с абсолютными ссылками.

    Если в формуле есть $A$1, при протягивании ссылка не изменится. Используйте относительные ссылки (A1) или смешанные ($A1).

  • 🚫 Ошибка #5: Разница часовых поясов при работе с СЕГОДНЯ().

    Функция СЕГОДНЯ() зависит от системных настроек ПК. Для универсальных расчетов лучше использовать фиксированные даты.

⚠️ Внимание: При импорте данных из внешних источников (например, CSV или баз данных) даты могут интерпретироваться как текст. Используйте функцию ДАТАЗНАЧ() для преобразования: =ДАТАЗНАЧ("15.05.2026").

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

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

Да, но это ручной метод. Создайте таблицу с месяцами и введите количество дней вручную (например, январь — 31, февраль — 28/29 и т. д.). Однако такой подход не учитывает високосные годы и требует постоянного обновления.

Почему моя формула возвращает ошибку #ИМЯ?

Ошибка #ИМЯ! возникает, если:

  • Вы опечатались в названии функции (например, ДЕНЬЬ вместо ДЕНЬ).
  • Используете англоязычную версию Excel, где функции называются иначе (DAY, EOMONTH).
  • Забыли закрывающую скобку в формуле.

Проверьте синтаксис и язык интерфейса Excel.

Как посчитать количество рабочих дней в месяце?

Для этого используйте функцию ЧИСТРАБДНИ() (англ. NETWORKDAYS):

=ЧИСТРАБДНИ(ДАТА(ГОД;МЕСЯЦ;1);ДАТАМЕС(ДАТА(ГОД;МЕСЯЦ;1);0))

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

Работает ли функция ДАТАМЕС в Excel Online?

Да, ДАТАМЕС() поддерживается в Excel Online, Excel 2016 и новее, а также в Google Sheets (под названием EOMONTH). В старых версиях (2013 и ранее) эту функцию может потребоваться добавить через надстройку Analysis ToolPak.

Можно ли использовать эти формулы в Google Таблицах?

Да, все приведенные формулы работают в Google Sheets, но названия функций нужно перевести на английский:

  • ДЕНЬ()DAY()
  • ДАТАМЕС()EOMONTH()
  • СЕГОДНЯ()TODAY()