EOMONTH в Google Таблицах: как найти последний день месяца

EOMONTH — это краткий и надёжный способ получить «конечную» дату месяца. Часто компании выставляют счета или формируют отчёты с привязкой к концу месяца, поэтому знание этой функции экономит время и уменьшает риск ошибок при ручном подсчёте дат.
Что делает функция EOMONTH и когда её применять
Функция EOMONTH возвращает последний день месяца, который находится на заданное количество месяцев до или после стартовой даты. Это полезно в случаях:
- расчёта сроков оплаты (последний день расчётного месяца);
- автоматического выставления дат истечения подписки;
- формирования ежемесячных отчётов и сводных таблиц;
- вычисления оставшихся дней до конца месяца.
Ключевая идея: укажите дату-начало и число месяцев (может быть отрицательным). Функция вернёт именно последний день целевого месяца.
Важно: EOMONTH учитывает високосные годы и корректно возвращает 28/29/30/31 число в зависимости от месяца.
Быстрые заметки
- Начальная дата может быть любым днём месяца; результат зависит только от количества месяцев. То есть EOMONTH(“03/05/2022”, 1) и EOMONTH(“02/25/2022”, 1) вернут один и тот же последний день следующего месяца при той же локали.
- Если в аргумент months передать десятичное число, оно будет усечено (truncated), а не округлено. 5.7 → 5.
Синтаксис функции EOMONTH
=EOMONTH(start_date, months)Разбор элементов:
- = — в Google Таблицах знак равенства указывает на функцию/формулу.
- EOMONTH() — имя функции, обозначающее «End Of MONTH».
- start_date — обязательный аргумент. Это дата-начало; может быть литералом, ссылкой на ящик с датой или функцией (например, TODAY()).
- months — обязательный аргумент. Количество месяцев, на которое нужно отступить вперёд (положительное) или назад (отрицательное).
Пример кода:
=EOMONTH(A2, B2)Пошаговый пример использования
Ниже — пошаговая инструкция для самого распространённого сценария: у вас есть столбец с датой начала и столбец с количеством месяцев.
.jpg?q=50&fit=crop&w=825&dpr=1.5)
- Выберите пустую ячейку, куда поместится результат.
- Введите начало формулы: =EOMONTH(
- Укажите start_date — либо дату в кавычках, либо ссылку на ячейку, например A2, затем запятую.
- Укажите months — например, ссылка B2 или число 1, -1 и т. п., затем закройте скобку.
- Нажмите Enter — ячейка вернёт последний день нужного месяца.
Примеры формул и результатов (при локали dd/mm/yyyy):
- =EOMONTH(“12/03/2022”, 0) → 31/03/2022 (последний день того же месяца);
- =EOMONTH(A2, 1) где A2 = 15/01/2023 → 28/02/2023 (если 2023 не високосный);
- =EOMONTH(TODAY(), 0) → последний день текущего месяца;
- =EOMONTH(TODAY(), -1) → последний день прошлого месяца.
Практические приёмы и шаблоны
- Получить последний день следующего месяца: =EOMONTH(A2, 1)
- Срок оплаты: если оплата должна быть в последний день через N месяцев: =EOMONTH(InvoiceDate, N)
- Дни до конца текущего месяца: =EOMONTH(TODAY(), 0) - TODAY()
- Стандартная дата истечения подписки через X месяцев: =EOMONTH(SignupDate, X)
Дополнительный приём: если нужно получить первый день следующего месяца, комбинируйте EOMONTH с датой:
=EOMONTH(A2, 0) + 1Это вернёт первый день следующего месяца относительно A2.
Сравнение с похожими функциями
- EDATE(start_date, months) — смещает дату на заданное количество месяцев, сохраняя день месяца (не обязательно конец). Например, EDATE(“31/01/2023”, 1) → 28/02/2023. EOMONTH же всегда возвращает последний день месяца.
- DATE(year, month, day) + комбинации YEAR/MONTH — альтернативный способ вычислить конец месяца, но сложнее и менее читаем.
Когда лучше использовать EOMONTH: когда нужен именно конец целевого месяца. Если нужен тот же календарный день через N месяцев — используйте EDATE.
Частые ошибки и как их исправить
- Неправильный формат даты → #VALUE!
- Проверьте локаль документа (Файл → Настройки) и формат ячеек (Формат → Число → Дата).
- Ввод даты как текста с неожиданной локалью (например, mm/dd/yyyy вместо dd/mm/yyyy).
- Рекомендуется хранить даты как реальные даты, а не текст.
- Использование десятичного числа в months.
- Десятичные дроби усекаются. Передавать дроби нет смысла.
- Ожидание округления к следующему месяцу.
- EOMONTH усечёт дробную часть; для округления нужно предварительно применять ROUND или INT с определённой логикой.
Важно: если вы получаете строку, а не дату, установите формат ячейки «Дата».
Альтернативные подходы и когда EOMONTH не пригодится
- Нужен фиксированный календарный день через N месяцев (например, всегда 15-е) — используйте EDATE или комбинацию DATE/YEAR/MONTH.
- Нужен последний рабочий день месяца (без выходных) — используйте WORKDAY или NETWORKDAYS совместно с обратным перебором дат.
- Если нужно учитывать банковские праздники, применяйте специализированные расписания/календарь рабочих дней или скрипт.
Методология внедрения EOMONTH в процесс (мини-план)
- Проанализируйте сценарии, где используется «конец месяца» (выставление счетов, отчёты, подписки).
- Найдите источники дат — убедитесь, что это реальные даты, а не текст.
- Стандартизируйте формат дат и локаль таблицы.
- Внедрите формулы EOMONTH в шаблоны и добавьте тестовые кейсы.
- Добавьте проверки (валидаторы) и комментарии к критическим формулам.
- Документируйте поведение для команды (особенно правила округления и обработку праздников).
Критерии приёмки
- Формула возвращает дату формата «Дата», а не текст.
- Результаты совпадают с ожидаемыми для тестовых входных данных: текущий месяц, прошлый, следующий, отрицательные значения.
- Обработаны крайние случаи (31-е января, февраль високосного года).
- Локаль и формат ячеек настроены и задокументированы.
Роли и чеклист внедрения
Для бухгалтерии:
- Убедиться, что все даты счетов вводятся в виде дат.
- Проверить шаблоны выставления счетов с EOMONTH.
Для продакт-мена:
- Проверить влияние на отчёты и подписки.
- Утвердить бизнес-правила (например, «платёж считается в конце месяца»).
Для разработчика/аналитика:
- Добавить unit-тесты на конвертацию дат.
- Обеспечить резервный сценарий для праздников и банковских выходных.
Тестовые случаи и приёмочные критерии
- Ввод: 15/01/2023, months = 0 → ожидается 31/01/2023.
- Ввод: 31/01/2023, months = 1 → ожидается 28/02/2023 (или 29/02 в високосный год).
- Ввод: 10/12/2022, months = -1 → ожидается 30/11/2022.
- Ввод: TODAY(), months = 0 → результат совпадает с последним днём текущего месяца.
- Ввод: текстовая дата “2023-02-05” в качестве строки → функция должна корректно распознавать формат или выдать ошибку; предпочтительна предварительная конвертация в дату.
Подсказки по локализации и форматам (Россия и похожие локали)
- Локаль Google Таблиц влияет на интерпретацию текстовых дат. Для России привычный формат — dd/mm/yyyy (или dd.mm.yyyy). Проверьте “Файл → Настройки → Локаль”.
- При обмене таблицами между регионами используйте ISO-формат YYYY-MM-DD для уменьшения путаницы.
Cheatsheet: быстрые формулы
- Последний день текущего месяца: =EOMONTH(TODAY(), 0)
- Последний день через 3 месяца: =EOMONTH(A2, 3)
- Первый день следующего месяца: =EOMONTH(A2, 0) + 1
- Количество дней до конца месяца: =EOMONTH(A2, 0) - A2
Риски и рекомендации
- Риск: неправильная интерпретация текстовых дат при смене локали. Рекомендация: храните даты как тип «Дата».
- Риск: бизнес-правила о «последнем дне» и «рабочем дне» различаются. Рекомендация: документируйте правила и добавляйте корректировку рабочих дней.
Краткое содержание
EOMONTH — простая и надёжная функция для получения последнего дня целевого месяца. Она экономит время бухгалтерам, менеджерам и аналитикам. При внедрении проверьте форматы дат, локаль документа и добавьте несколько тестов на крайние случаи.
Важно: используйте EOMONTH, когда нужно именно «конец месяца». Для других задач (фиксированный день месяца, рабочие дни, праздники) применяйте подходящие функции или дополнительные проверки.
Применив рекомендации из этого руководства, вы уменьшите ручную работу и сократите ошибки при автоматическом формировании дат в Google Таблицах.
Похожие материалы