Как-то пришлось создать базу в Excel по дням на весь год. Для дальнейшего управления мне надо было перевести дату в текст.
![]()
Можно было просто выставить начальную дату и потом протянуть ее, но дело в том, что когда ячейка обладала типом «Дата», появлялись кое-какие глюки. Пришлось перевести ее в текстовый тип. И тут снова проблема – если формат ячейки типа «Дата» переводить в тип «Текст», выходит вот такая штука:
![]()
Не знаю, как всем, а мне легче было накидать маленький макрос.
![]()
Двойным щелчком по вкладке модулей в открывшемся окне накидал следующее:
![]()
Разбор макроса. В нем я использую три переменные:
- newdate – тип «Дата» для перебора даты,
- dateWrite – тип «Текст» для перевода даты в текст,
- а – число для смены ячеек.
а = 2 – первоначальный номер ячейки. Затем переменной newdate присваиваем первоначальную дату «1 января 2021 года» – #1/1/2021#, запускаем цикл, пока год даты не изменится на 2022.
В цикле переменной dateWrite присваивается дата, записываем в ячейку значение dateWrite, затем номер ячейки мы увеличиваем на один, а дату – на один день. И цикл запускается заново.
Текс полного макроса:
Sub Newyear()
Dim newdate As Date
Dim dateWrite As String
a = 2
Date = #1/1/2021#
newdate = Date
dateWrite = year(newdate)
Sheets(dateWrite).Select
Do
dateWrite = newdate
Range(«A« & a).Value = dateWrite
a = a + 1
newdate = newdate + 1
Loop Until year(newdate) = 2022
End Sub
Прочел статью про функцию сегодня(), вспомнил про этот метод и решил поделиться им. Это моя первая статья, так что строго не судите. Может, кому и пригодится.
Комментарии