Помогите с макросом!

  • Автор темы Whisper
  • Дата начала
Статус
Закрыто для дальнейших ответов.
W

Whisper

Очень нужно узнать реально ли в экселе при помощи макросов сделать следующую операцию:
Есть журнал. В нем есть графа даты, графа номера, графа имени и название.
Нужно, чтобы выводились (или в новом документе или в новом окне или в новом листе) данные вписанные месяц назад. Т.е. 30 дней.
Есть некоторые наброски, но это не то. Помогите пожалуйста!

Наброски:
sub CreateReport ()
dim WS as Worksheet
dim WS1 as worksheet
set WS = ActiveSheet 'это тот лист, на котором лежит реестр
Worksheets.Add
set WS1 = Activesheet
rownum=2
'D1 и D2 - это даты границ пред.месяца

D1 = DateSerial(2006,6,30)
D2 = DateSerial(2006,8,1)

for I = 2 to WS.Range("A65536").End(xlUp).Row
if WS.Cells(I,1).Value > D1 and WS.Cells(I,1).Value < D2 then 'предположим, что дата в колонке 1
WS1.Cells(rownum,1).Value = WS.Cells(I,1).Value
WS1.Cells(rownum,2).Value = WS.Cells(I,2).Value
WS1.Cells(rownum,3).Value = WS.Cells(I,3).Value
WS1.Cells(rownum,4).Value = WS.Cells(I,4).Value
rownum=rownum+1
end if
next

end sub

Тема еще в том что надо сделать автоматический отсчет даты, а не вписывать диапазон вручную как в примере.
 
T

Tanya

sub CreateReport ()
dim WS as Worksheet
dim WS1 as worksheet
set WS = ActiveSheet 'это тот лист, на котором лежит реестр
Worksheets.Add
set WS1 = Activesheet
rownum=2
'D1 и D2 - это даты границ пред.месяца

D1 = Date 'текущая дата
D2 = DateAdd("d",-30,d1)

for i = 2 to WS.Range("A65536").End(xlUp).Row
if WS.Cells(I,1).Value <= D1 and WS.Cells(I,1).Value > D2 then 'предположим, что дата в колонке 1
WS1.Range("A" & rownum & ":)" & rownum).value = _
WS.Range("A" & i & ":huh:" & i).value
end if
next i
Set WS=Nothing
Set WS1=Nothing
end sub
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!