Как-то пришлось создать базу в 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
Прочел статью про функцию сегодня(), вспомнил про этот метод и решил поделиться им. Это моя первая статья, так что строго не судите. Может, кому и пригодится.
Комментарии