Почему стандартное умножение на 30/31 день — ошибка, и как считать точно
Вы когда-нибудь пытались умножить дневную ставку на "среднее" количество дней в месяце — например, на 30? Такой подход даёт погрешность до 10% в годовом исчислении! В Microsoft Excel и Google Таблицах есть точные способы получить количество дней в любом месяце — от текущего до февраля 2026 года (високосного). Эта статья научит вас:
✅ Использовать функции ДАТАМЕС(), ДЕНЬ() и КОНМЕСЯЦА() для динамических расчётов
✅ Умножать данные на дни конкретного месяца (например, только для марта 2026)
✅ Автоматически учитывать високосные годы без ручного ввода
✅ Избегать ошибок #ЗНАЧ! и #ЧИСЛО! при работе с датами
Мы разберём примеры для бухгалтеров (расчёт зарплаты по дням), маркетологов (планирование бюджета на месяц) и аналитиков (нормализация данных по временным периодам). Все формулы работают в Excel 2010–2023 и Excel Online, если не указано иное.
Способ 1: Функция КОНМЕСЯЦА — самый простой вариант
Функция КОНМЕСЯЦА(нач_дата; кол_месяцев) возвращает последний день месяца, отстоящего на заданное количество месяцев от начальной даты. Чтобы получить количество дней, достаточно вычесть первый день месяца из последнего и добавить 1:
=КОНМЕСЯЦА(A1;0)-ДАТА(ГОД(A1);МЕСЯЦ(A1);1)+1
Где A1 — ячейка с любой датой из нужного месяца. Например, для февраля 2026 (високосного) формула вернёт 29, а для февраля 2023 — 28.
- 📅 Плюсы: работает с любыми месяцами, включая будущие (например, декабрь 2030 года)
- ⚡ Минусы: требует отдельной ячейки с датой или вложенных функций
ДАТА()/СЕГОДНЯ() - 🔄 Альтернатива: для текущего месяца замените
A1наСЕГОДНЯ()
1. Убедитесь, что в ячейке A1 указана корректная дата (например, 01.02.2026)
2. Формат ячейки с результатом — "Общий" или "Числовой"
3. Для будущих месяцев используйте функцию ДАТА (например, =ДАТА(2026;2;1))
4. Проверьте результат для февраля — должно быть 28 или 29 дней-->
Способ 2: Комбинация ДАТА + ДЕНЬ для конкретного месяца
Если вам нужно количество дней в фиксированном месяце (например, всегда в июле), используйте эту формулу:
=ДЕНЬ(ДАТА(ГОД; МЕСЯЦ+1; 1)-1)
Где:
ГОД— четырёхзначный год (например, 2026)МЕСЯЦ— номер месяца от 1 (январь) до 12 (декабрь)
Пример для июля 2026:
=ДЕНЬ(ДАТА(2026; 8; 1)-1)
Формула вернёт 31, так как 1 августа минус 1 день = 31 июля.
Почему работает формула с "1 числом следующего месяца"
Функция ДАТА(2026;8;1) создаёт дату 1 августа 2026. Вычитая 1 день, мы получаем 31 июля 2026. Функция ДЕНЬ() извлекает из этой даты число 31. Этот трюк универсален для любого месяца, так как Excel автоматически корректирует даты (например, 1 марта минус 1 день = 28/29 февраля).
⚠️ Внимание: Если указать МЕСЯЦ=12 (декабрь) и прибавить 1, Excel вернёт 1 января следующего года. Формула по-прежнему сработает корректно, но убедитесь, что год указан верно для вашего случая.
Способ 3: Динамическое умножение на дни текущего месяца
Для автоматического расчёта с учётом текущей даты (например, для ежемесячных отчётов) используйте:
=ДЕНЬ(КОНМЕСЯЦА(СЕГОДНЯ();0)) * B1
Где B1 — ячейка с числом, которое нужно умножить (например, дневная ставка). Формула:
- Получает сегодняшнюю дату (
СЕГОДНЯ()) - Находит последний день текущего месяца (
КОНМЕСЯЦА) - Извлекает номер дня (
ДЕНЬ) - Умножает результат на значение из
B1
Критическая деталь: если вы копируете файл в другой месяц, результат обновится автоматически. Чтобы зафиксировать месяц, замените СЕГОДНЯ() на конкретную дату (например, =ДАТА(2026;5;1)).
| Месяц (2026 год) | Формула | Результат (дней) | Пример умножения (×100) |
|---|---|---|---|
| Февраль | =ДЕНЬ(КОНМЕСЯЦА(ДАТА(2026;2;1);0)) |
29 | 2900 |
| Апрель | =ДЕНЬ(КОНМЕСЯЦА(ДАТА(2026;4;1);0)) |
30 | 3000 |
| Сентябрь | =ДЕНЬ(КОНМЕСЯЦА(ДАТА(2026;9;1);0)) |
30 | 3000 |
| Октябрь | =ДЕНЬ(КОНМЕСЯЦА(ДАТА(2026;10;1);0)) |
31 | 3100 |
Способ 4: Умножение с учётом рабочих дней (исключая выходные)
Если нужно умножить на количество рабочих дней (понедельник–пятница), используйте функцию ЧИСТРАБДНИ():
=ЧИСТРАБДНИ(ДАТА(ГОД;МЕСЯЦ;1); КОНМЕСЯЦА(ДАТА(ГОД;МЕСЯЦ;1);0)) * B1
Пример для мая 2026 (где 1 и 9 мая — праздники):
=ЧИСТРАБДНИ(ДАТА(2026;5;1); КОНМЕСЯЦА(ДАТА(2026;5;1);0); {"1.05.2026";"9.05.2026"}) * B1
- 📊 Как работает: считает все дни между 1-м числом и последним днём месяца, исключая субботы, воскресенья и указанные праздники
- 🔧 Настройка: список праздников передаётся как массив в фигурных скобках
{...} - ⚠️ Ограничение: в Excel 2019 и старше массив можно вводить прямо в формулу; в Excel 2016 потребуется создать отдельный диапазон с датами праздников
Способ 5: Массив формул для нескольких месяцев сразу
Если вам нужно умножить одно значение на количество дней в нескольких месяцах (например, для квартального планирования), используйте формулу массива:
=ДЕНЬ(КОНМЕСЯЦА(ДАТА(2026;{1;2;3};1);0)) * B1
Эта формула вернёт три результата для января, февраля и марта 2026 года. Чтобы ввести её правильно:
- Выделите диапазон из 3 ячеек по вертикали (например, C1:C3)
- Введите формулу в строку формул и нажмите
Ctrl+Shift+Enter(в Excel 365 достаточно простоEnter) - Формула автоматически обернётся в фигурные скобки:
{=ДЕНЬ(...)}
⚠️ Внимание: В Google Таблицах формулы массива вводятся безCtrl+Shift+Enter— просто нажмитеEnter. Однако для корректной работы добавьте функциюARRAYFORMULA()в начало:
=ARRAYFORMULA(ДЕНЬ(КОНМЕСЯЦА(ДАТА(2026;{1;2;3};1);0)) * B1)
Типичные ошибки и как их исправить
Даже опытные пользователи Excel сталкиваются с ошибками при работе с датами. Вот самые распространённые проблемы и их решения:
- 🔴 #ЗНАЧ!: Ошибка появляется, если в формуле переданы некорректные аргументы. Проверьте:
- Формат ячейки с датой — должен быть "Дата" (а не "Текстовый")
- Номер месяца в функции
ДАТА()— от 1 до 12
- 🔴 #ЧИСЛО!: Возникает при попытке создать несуществующую дату (например, 31 февраля). Используйте
КОНМЕСЯЦАдля автоматической корректировки. - 🔴 Неверное количество дней: Убедитесь, что год указан правильно — особенно важно для февраля. Например, 2026 год високосный (29 дней), а 2023 — нет (28 дней).
Чтобы проверить формат ячейки:
- Выделите ячейку с датой
- Нажмите
Ctrl+1(или правая кнопка → "Формат ячеек") - Выберите категорию "Дата" и нужный формат (например, "14.03.2026")
FAQ: Ответы на частые вопросы
Можно ли умножить на дни месяца без указания года?
Да, но результат будет неточным для февраля. Формула =ДЕНЬ(ДАТА(2026;МЕСЯЦ+1;1)-1) требует года, так как количество дней в феврале зависит от високосности. Если год не важен, используйте усреднённое значение: =ЕСЛИ(МЕСЯЦ=2; 28,25; 30,42) (среднее количество дней с учётом високосных лет).
Как умножить на дни месяца в Google Таблицах?
Все формулы из статьи работают в Google Таблицах, за исключением:
- Функция
КОНМЕСЯЦАназываетсяEOMONTH(от англ. End Of Month) - Для массивов используйте
ARRAYFORMULA(см. Способ 5) - Разделитель аргументов — запятая (
,), а не точка с запятой (;)
Пример для февраля 2026: =DAY(EOMONTH(DATE(2026,2,1),0)).
Почему моя формула возвращает 31 для апреля?
Скорее всего, вы используете формулу вида =ДЕНЬ(ДАТА(ГОД;МЕСЯЦ;0)). Ноль в аргументе "день" означает "последний день предыдущего месяца". Для апреля это вернёт 31 марта. Правильный вариант: =ДЕНЬ(ДАТА(ГОД;МЕСЯЦ+1;1)-1).
Как умножить на дни месяца в Power Query?
В Power Query (инструмент для ETL в Excel) используйте следующий подход:
- Добавьте пользовательский столбец с формулой:
=Date.DaysInMonth([ВашаДата]) - Умножьте результат на нужное значение в новом столбце
Пример для текущего месяца:
= Date.DaysInMonth(DateTime.LocalNow()) * [ВашеЗначение]
Можно ли сделать так, чтобы формула автоматически обновлялась каждый месяц?
Да, используйте СЕГОДНЯ() или ТДАТА() в комбинации с КОНМЕСЯЦА. Например:
=ДЕНЬ(КОНМЕСЯЦА(СЕГОДНЯ();0)) * B1
Чтобы формула обновлялась при открытии файла:
- Перейдите в
Файл → Параметры → Формулы - В разделе "Параметры вычислений" выберите "Автоматически"