Как найти последний день месяца с помощью vba (с примером)
Вы можете использовать функцию DateSerial() в VBA со значением 0 для аргумента дня, чтобы найти последний день месяца для даты в определенной ячейке.
Например, вы можете использовать следующий синтаксис, чтобы найти последний день месяца по дате в ячейке A1 и вернуть эту дату в ячейку B1 :
dateVal = DateValue(Range(" A1 "))
Range(" B1 ").Value = DateSerial(Year(dateVal), Month(dateVal)+1, 0)
Например, если ячейка A1 содержит дату 05.01.2023 , ячейка B1 вернет 31.01.2023 .
В следующем примере показано, как использовать эту функцию на практике.
Пример: использование VBA для поиска последнего дня месяца
Допустим, у нас есть следующий набор данных в Excel, содержащий информацию о продажах, совершенных в разные даты в компании:
Предположим, мы хотим найти последний день месяца для каждой даты в столбце A и вернуть дату в соответствующую ячейку в столбце C.
Для этого мы можем использовать следующий синтаксис:
SubFirstDayOfMonth ()
Dim i As Integer
For i = 2 To 11
dateVal = DateValue(Range(" A " & i))
Range(" C " & i).Value = DateSerial(Year(dateVal), Month(dateVal)+1, 0)
Next i
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Каждая из дат в столбце C представляет собой последний день месяца для соответствующей даты в столбце A.
Примечание № 1. В коде мы использовали For i = от 2 до 11, поскольку ячейки от A2 до A11 содержали интересующие нас даты. Не стесняйтесь менять этот диапазон в зависимости от диапазона ячеек, который вы хотите использовать.
Примечание №2 . Полную документацию функции DateSerial() в VBA можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи с помощью VBA:
Как сортировать по дате в VBA
Как добавить, если между двумя датами в VBA
Как посчитать больше даты в VBA