Работа с датами в Microsoft Excel — одна из самых востребованных задач среди пользователей. Часто требуется узнать, сколько дней содержит конкретный месяц: для расчёта зарплаты, планирования проектов, анализа временных рядов или составления графиков. Вручную подсчитывать дни неудобно — особенно если речь идёт о высокосных годах или динамических отчётах. К счастью, в Excel есть несколько способов автоматизировать этот процесс: от простых формул до продвинутых функций.
Многие ошибочно думают, что для этой задачи нужны макросы или сложные скрипты. На самом деле достаточно стандартных инструментов программы. В этой статье мы разберём 5 проверенных методов — от элементарных до универсальных, которые работают даже с учётом високосных лет. Вы узнаете, как получить результат за считанные секунды, избежать ошибок и адаптировать решения под свои задачи.
Перед тем как перейти к формулам, важно понять одну вещь: Excel хранит даты как последовательные числа (начиная с 1 января 1900 года). Это означает, что любой месяц можно представить как разницу между его первым и последним днём. Именно этот принцип лежит в основе большинства решений ниже.
1. Самый простой способ: функция ДЕНЬ с аргументом "0"
Если вам нужно быстро узнать количество дней в текущем месяце (например, для отчёта "на сегодня"), используйте комбинацию функций ДЕНЬ() и СЕГОДНЯ(). Этот метод не требует знания года или названия месяца — всё рассчитывается автоматически.
Формула выглядит так:
=ДЕНЬ(ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ())+1; 0))
Разберём её по частям:
СЕГОДНЯ()— возвращает текущую дату.ГОД()иМЕСЯЦ()— извлекают год и месяц из этой даты.ДАТА(год; месяц+1; 0)— создаёт дату "0-й день следующего месяца", что эквивалентно последнему дню текущего.ДЕНЬ()— выделяет номер дня из полученной даты (т.е. количество дней в месяце).
✅ Плюсы: работает без дополнительных данных, обновляется автоматически при открытии файла.
❌ Минусы: всегда считает текущий месяц, не подходит для произвольных дат.
2. Универсальная формула для любого месяца и года
Чтобы посчитать дни в произвольном месяце (например, февраль 2026 или август 2026), используйте модифицированную версию предыдущей формулы. Здесь вместо СЕГОДНЯ() указываем конкретные год и месяц:
=ДЕНЬ(ДАТА(2026; 6+1; 0))
Где:
- 📅
2026— нужный год (можно заменить на ячейку с годом, напримерA1). - 📆
6— номер месяца (июнь). - 🔢
+1и0— хитрость для получения последнего дня месяца.
Эта формула корректно учитывает високосные годы. Например, для февраля 2026 года она вернёт 29 дней, а для февраля 2023 — 28 дней.
В Excel дата Почему работает "0-й день месяца"
ДАТА(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 или старше, этой функции не будет. В таком случае применяйте методы из предыдущих разделов.
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.2026 | 31 | =ДЕНЬ(КОНМЕСЯЦА(A2;0)) |
| 10.02.2026 | 29 | =ДЕНЬ(КОНМЕСЯЦА(A3;0)) |
| 22.04.2023 | 30 | =ДЕНЬ(КОНМЕСЯЦА(A4;0)) |
| 30.11.2026 | 30 | =ДЕНЬ(КОНМЕСЯЦА(A5;0)) |
💡 Совет: Если вам нужно подсветить високосные феврали, используйте условное форматирование с правилом:
=И(МЕСЯЦ(A1)=2; ГОДВИСОКОС(ГОД(A1)))
Частые ошибки и как их избежать
Даже в простых формулах пользователи часто допускают ошибки. Вот самые распространённые:
- 🔴 Неправильный формат ячеек:
Если ячейка с датой отформатирована как текст, Excel не распознаёт её в формулах. Чтобы исправить, выделите ячейку →
Формат ячеек→ выберитеДата. - 🔴 Ошибка #ЧИСЛО! при неверном номере месяца:
Номер месяца должен быть от 1 до 12. Если указать
13, Excel вернёт ошибку. Используйте проверку:=ЕСЛИ(МЕСЯЦ(ДАТА(2026;13;1))=1; "Ошибка: месяц >12"; ДЕНЬ(КОНМЕСЯЦА(ДАТА(2026;12;1);0))) - 🔴 Игнорирование високосных лет:
Формулы вроде
=ЕСЛИ(МЕСЯЦ=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).