Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с макросом!
Форум программистов > Системное программирование > Другие
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

Тема еще в том что надо сделать автоматический отсчет даты, а не вписывать диапазон вручную как в примере.
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 & ":D" & rownum).value = _
WS.Range("A" & i & ":D" & i).value
end if
next i
Set WS=Nothing
Set WS1=Nothing
end sub
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.