Vba excel последний день месяца

Последний день месяца определяется с помощью функции КОНМЕСЯЦА() .

Если ячейка А1 содержит дату, то последний день месяца, которому принадлежит эта дата, определяется так (см. файл примера ):

Или другой формулой: =ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0)

Первый день месяца определяется в статье Первый день месяца.

Я довольно новичок в VBA. У меня есть диапазон дат, и мне нужно написать код, который изменит дату в ячейке на последний день месяца, используемый в ячейке. Например, если дата в ячейке — 28/03/2018 я хочу заменить ее на 31/03/2018 . Есть идеи, как я могу это сделать?

7 ответов

Вы также можете получить нужный результат с помощью одной строки кода благодаря формуле Eomonth:

Вы можете использовать пользовательскую функцию GetLastDayOfMonth() и передать интересующий вас диапазон:

Функция проверяет месяц и год прошедшей даты и возвращает новую дату, которая является последним днем месяца для этого конкретного месяца и года.

Затем в версии TestMe вы можете сравнить данную дату с последним днем месяца, сгенерированным функцией. Если даты совпадают, то эта дата является последним днем соответствующего месяца. Используя DateAdd() можно получить следующий день lastDay.

В приведенном выше примере я явно написал Range («A1») 9 раз, поэтому, вероятно, легче следовать.

Во-первых, если вы просто хотите, чтобы в Excel был последний день месяца, используйте функцию = EOMONTH или посмотрите этот пост SO с кодом vba: VBA Run Macro Последний день месяца

Прокрутка собственного кода даты и времени — плохая идея. Не делай этого.

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

Первый день месяца в Excel

Для формулы, преобразующей текущую или другую дату в первый день месяца, используем функции «ДАТА», «ГОД» и «МЕСЯЦ»:

  • Первый день текущего месяца от текущей даты: =ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());1)
  • Первый день прошлого месяца от текущей даты: =ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ())-1;1)
  • Первый день текущего месяца предыдущего года от текущей даты: =ДАТА(ГОД(СЕГОДНЯ())-1;МЕСЯЦ(СЕГОДНЯ());1)
  • Первый день месяца от произвольной даты, записанной в ячейку «A1»: =ДАТА(ГОД(A1);МЕСЯЦ(A1);1)
Читайте также:  Процессоры снапдрагон по мощности

Определить первый день месяца можно не только для прошедших периодов, но и для будущих, прибавив соответствующее количество лет или месяцев в формулу.

Последний день месяца в Excel

Для определения последнего месяца от текущей или произвольной даты в Excel, начиная с версии 2007 года, существует функция «КОНМЕСЯЦА» с двумя аргументами: «Начальная дата» и «Количество месяцев». Если «Количество месяцев» равно 0, то будет возвращен последний день того месяца, который содержится в аргументе «Начальная дата».

Примеры для Excel 2007-2016:

  • Последний день текущего месяца от текущей даты: =КОНМЕСЯЦА(СЕГОДНЯ();0)
  • Последний день прошлого месяца от текущей даты: =КОНМЕСЯЦА(СЕГОДНЯ();-1)
  • Последний день текущего месяца предыдущего года от текущей даты: =КОНМЕСЯЦА(СЕГОДНЯ();-12)
  • Последний день месяца от произвольной даты, записанной в ячейку «A1»: =КОНМЕСЯЦА(A1;0)

Функция «КОНМЕСЯЦА» возвращает значение в числовом виде, поэтому для правильного отображения последнего дня месяца следует к ячейке с формулой применить формат даты.

В версиях Excel по 2003 год функция «КОНМЕСЯЦА» по-умолчанию отсутствует, поэтому будем применять формулу, составленную, как и для первого дня месяца, из функций «ДАТА», «ГОД» и «МЕСЯЦ».

Примеры для Excel 2000-2003:

  • Последний день текущего месяца от текущей даты: =ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ())+1;0)
  • Последний день прошлого месяца от текущей даты: =ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());0)
  • Последний день текущего месяца предыдущего года от текущей даты: =ДАТА(ГОД(СЕГОДНЯ())-1;МЕСЯЦ(СЕГОДНЯ())+1;0)
  • Последний день месяца от произвольной даты, записанной в ячейку «A1»: =ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0)

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

Как вариант, для определения последнего дня месяца можно использовать формулу, возвращающую первый день следующего месяца, из значения которой вычитается единица: =ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;1)-1

Читайте также:  Задуманы два натуральных числа произведения которых 720

Определение первого и последнего дня месяца имеет большую актуальность для автоматического заполнения интервала дат в диалоговых формах с помощью VBA Excel.