Доброго времени суток! Нужно с листа одной книги скопировать данные в другую книгу, учитывая года и месяцы, так, чтобы скопировались данные полностью прошлого года, и месяцы с 1 по указанный текущего. В столбце Е год, в D месяц. Gody - текущий год, mec - заданный месяц. [vba]
Код
With Sheets("Статистика") If .FilterMode Then .ShowAllData st = .Cells(Rows.Count, 1).End(xlUp).Row .Range(.Cells(1, 1), .Cells(st, 39)).AutoFilter Field:=5, Criteria1:=gody - 1 .Range(.Cells(2, 1), .Cells(st, 39)).Copy End With
With Sheets("Статистика") If .FilterMode Then .ShowAllData .Range(.Cells(1, 1), .Cells(st, 39)).AutoFilter Field:=5, Criteria1:=gody For l = 1 To mec .Range(.Cells(1, 1), .Cells(st, 39)).AutoFilter Field:=4, Criteria2:=l, Operator:=xlFilterValues Next l Range(.Cells(2, 1), .Cells(st, 39)).Copy End With
Workbooks("отчеты.xlsm").Activate With Sheets("Статистика") stt = .Cells(Rows.Count, 1).End(xlUp).Row + 1 .Range(.Cells(stt, 1), .Cells(st + stt, 39)).PasteSpecial Paste:=xlPasteValues End With Application.CutCopyMode = False Workbooks(Name).Close False
[/vba]Но на это дело ругается. Что можете посоветовать? Изначально эта необходимость возникла из-за того, что сводные таблицы, при сборе данных с января по заданный месяц текущего года, берут все известные данные за год. Мне показалось пойти легче, скопировать нужный диапазон, чем каждую таблицу обрабатывать. Хотя можно и забить на сводные и сделать на формулах, но как я понимаю, сводные таблицы меньше ресурсов машины жрут.
Доброго времени суток! Нужно с листа одной книги скопировать данные в другую книгу, учитывая года и месяцы, так, чтобы скопировались данные полностью прошлого года, и месяцы с 1 по указанный текущего. В столбце Е год, в D месяц. Gody - текущий год, mec - заданный месяц. [vba]
Код
With Sheets("Статистика") If .FilterMode Then .ShowAllData st = .Cells(Rows.Count, 1).End(xlUp).Row .Range(.Cells(1, 1), .Cells(st, 39)).AutoFilter Field:=5, Criteria1:=gody - 1 .Range(.Cells(2, 1), .Cells(st, 39)).Copy End With
With Sheets("Статистика") If .FilterMode Then .ShowAllData .Range(.Cells(1, 1), .Cells(st, 39)).AutoFilter Field:=5, Criteria1:=gody For l = 1 To mec .Range(.Cells(1, 1), .Cells(st, 39)).AutoFilter Field:=4, Criteria2:=l, Operator:=xlFilterValues Next l Range(.Cells(2, 1), .Cells(st, 39)).Copy End With
Workbooks("отчеты.xlsm").Activate With Sheets("Статистика") stt = .Cells(Rows.Count, 1).End(xlUp).Row + 1 .Range(.Cells(stt, 1), .Cells(st + stt, 39)).PasteSpecial Paste:=xlPasteValues End With Application.CutCopyMode = False Workbooks(Name).Close False
[/vba]Но на это дело ругается. Что можете посоветовать? Изначально эта необходимость возникла из-за того, что сводные таблицы, при сборе данных с января по заданный месяц текущего года, берут все известные данные за год. Мне показалось пойти легче, скопировать нужный диапазон, чем каждую таблицу обрабатывать. Хотя можно и забить на сводные и сделать на формулах, но как я понимаю, сводные таблицы меньше ресурсов машины жрут.Паштет
Сообщение отредактировал Паштет - Вторник, 30.06.2020, 16:49