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

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

Многие ошибочно думают, что для этой задачи нужны макросы или сложные скрипты. На самом деле достаточно стандартных инструментов программы. В этой статье мы разберём 5 проверенных методов — от элементарных до универсальных, которые работают даже с учётом високосных лет. Вы узнаете, как получить результат за считанные секунды, избежать ошибок и адаптировать решения под свои задачи.

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

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

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

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

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

Разберём её по частям:

  1. СЕГОДНЯ() — возвращает текущую дату.
  2. ГОД() и МЕСЯЦ() — извлекают год и месяц из этой даты.
  3. ДАТА(год; месяц+1; 0) — создаёт дату "0-й день следующего месяца", что эквивалентно последнему дню текущего.
  4. ДЕНЬ() — выделяет номер дня из полученной даты (т.е. количество дней в месяце).

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

Минусы: всегда считает текущий месяц, не подходит для произвольных дат.

2. Универсальная формула для любого месяца и года

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

=ДЕНЬ(ДАТА(2026; 6+1; 0))

Где:

  • 📅 2026 — нужный год (можно заменить на ячейку с годом, например A1).
  • 📆 6 — номер месяца (июнь).
  • 🔢 +1 и 0 — хитрость для получения последнего дня месяца.

Эта формула корректно учитывает високосные годы. Например, для февраля 2026 года она вернёт 29 дней, а для февраля 2023 — 28 дней.

Почему работает "0-й день месяца"

В Excel дата ДАТА(2026; 7; 0) означает "день перед 1 июля 2026 года", т.е. 30 июня. Таким образом, ДАТА(год; месяц+1; 0) всегда даёт последний день предыдущего месяца.

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

Допустим, в ячейке A1 у вас год (например, 2026), а в B1 — месяц (например, 2 для февраля). Тогда формула примет вид:

=ДЕНЬ(ДАТА(A1; B1+1; 0))

3. Функция КОНМЕСЯЦА: современный подход (Excel 2010+)

В новых версиях Excel (начиная с 2010) появилась специализированная функция КОНМЕСЯЦА() (EOMONTH в английской версии). Она непосредственно возвращает последний день месяца, что упрощает задачу:

=ДЕНЬ(КОНМЕСЯЦА(ДАТА(2026; 5; 1); 0))

Аргументы:

  • 📅 ДАТА(2026; 5; 1) — любая дата в нужном месяце (здесь 1 мая 2026).
  • 🔢 0 — смещение в месяцах (0 означает тот же месяц).

Функция КОНМЕСЯЦА автоматически корректирует високосные годы и поддерживает отрицательные смещения (например, -1 вернёт последний день предыдущего месяца).

⚠️ Внимание: Если вы используете Excel 2007 или старше, этой функции не будет. В таком случае применяйте методы из предыдущих разделов.

📊 Какую версию Excel вы используете?
2010 или новее
2007
2003
Не знаю
Другую

4. Альтернативный метод: вычитание дат

Ещё один надёжный способ — вычесть первый день месяца из первого дня следующего месяца. Логика проста: разница между 1 марта и 1 апреля равна количеству дней в марте.

Формула:

=ДАТА(2026; 6+1; 1) - ДАТА(2026; 6; 1)

Где:

  • 📅 2026 — год.
  • 📆 6 — месяц (июнь).
  • 🔢 +1 — следующий месяц (июль).

🔹 Преимущество: не требует функции ДЕНЬ(), работает во всех версиях Excel.

🔹 Недостаток: менее интуитивен для новичков.

Убедитесь, что год указан в формате 4 цифр (например, 2026, а не 24)|

Проверьте, что номер месяца от 1 (январь) до 12 (декабрь)|

Для февраля високосного года используйте функцию ГОДВИСОКОС() для двойной проверки|

Тестируйте формулу на крайних случаях (февраль, месяцы с 31 днём)

-->

5. Использование функции ГОДВИСОКОС для февраля

Если вам нужно специально проверить февраль (например, для расчёта високосных бонусов или графиков платежей), комбинируйте функцию ГОДВИСОКОС() с условной логикой:

=ЕСЛИ(ГОДВИСОКОС(2026); 29; 28)

Эта формула вернёт:

  • 🔘 29, если год високосный (например, 2026).
  • 🔘 28, если год не високосный (например, 2023).

Для универсального решения (любой месяц) комбинируйте её с предыдущими методами:

=ЕСЛИ(МЕСЯЦ(ДАТА(2026;2;1))=2; ЕСЛИ(ГОДВИСОКОС(2026); 29; 28); ДЕНЬ(КОНМЕСЯЦА(ДАТА(2026;2;1);0)))

⚠️ Внимание: Функция ГОДВИСОКОС() считает високосным год, который делится на 4, но не делится на 100, кроме случаев, когда он делится на 400. Это соответствует григорианскому календарю.

6. Динамические таблицы: автоматизация для диапазонов дат

Допустим, у вас есть столбец с датами (например, A2:A100), и для каждой нужно посчитать дни в её месяце. Используйте протягиваемую формулу:

=ДЕНЬ(КОНМЕСЯЦА(A2; 0))

или (для старых версий Excel):

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

📊 Пример таблицы с результатами:

ДатаДней в месяцеФормула
15.01.202631=ДЕНЬ(КОНМЕСЯЦА(A2;0))
10.02.202629=ДЕНЬ(КОНМЕСЯЦА(A3;0))
22.04.202330=ДЕНЬ(КОНМЕСЯЦА(A4;0))
30.11.202630=ДЕНЬ(КОНМЕСЯЦА(A5;0))

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

=И(МЕСЯЦ(A1)=2; ГОДВИСОКОС(ГОД(A1)))

Частые ошибки и как их избежать

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

  1. 🔴 Неправильный формат ячеек:

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

  2. 🔴 Ошибка #ЧИСЛО! при неверном номере месяца:

    Номер месяца должен быть от 1 до 12. Если указать 13, Excel вернёт ошибку. Используйте проверку:

    =ЕСЛИ(МЕСЯЦ(ДАТА(2026;13;1))=1; "Ошибка: месяц >12"; ДЕНЬ(КОНМЕСЯЦА(ДАТА(2026;12;1);0)))
  3. 🔴 Игнорирование високосных лет:

    Формулы вроде =ЕСЛИ(МЕСЯЦ=2; 28; ...) не учитывают високосные годы. Всегда используйте ГОДВИСОКОС() или КОНМЕСЯЦА().

⚠️ Внимание: При копировании формул с абсолютными ссылками (например, $A$1) убедитесь, что они не "залипли" на одной ячейке. Для динамических расчётов используйте относительные ссылки (A1).

FAQ: Ответы на популярные вопросы

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

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

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

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

  • 📛 Название функции написано с опечаткой (например, КОНМЕСЯЦ вместо КОНМЕСЯЦА).
  • 🌍 Вы используете английскую версию Excel, где функция называется EOMONTH.
  • 🔄 В настройках региональные параметры отличаются от русского языка.

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

🔹 Как посчитать дни в месяце для даты в формате "май 2026"?

Если дата хранится как текст (например, "май 2026"), сначала преобразуйте её в дату с помощью:

=ДАТАЗНАЧ("1 " & A1)

где A1 — ячейка с текстом. Затем применяйте любую формулу из статьи.

🔹 Работают ли эти методы в Google Sheets?

Да, все формулы совместимы с Google Таблицами, за исключением:

  • 📑 Функция КОНМЕСЯЦА называется EOMONTH (как в английском Excel).
  • 📑 Функция ГОДВИСОКОСISLEAP.

Пример для Google Sheets:

=DAY(EOMONTH(DATE(2026;6;1);0))

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

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

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

Чтобы исключить праздники, добавьте их как третий аргумент: =ЧИСТРАБДНИ(A1; B1; Праздники!A:A).