Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Копирование ячеейк с листа на лист с двойным условием - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование ячеейк с листа на лист с двойным условием (Макросы/Sub)
Копирование ячеейк с листа на лист с двойным условием
Паштет Дата: Вторник, 30.06.2020, 16:48 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 155
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток!
Нужно с листа одной книги скопировать данные в другую книгу, учитывая года и месяцы, так, чтобы скопировались данные полностью прошлого года, и месяцы с 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

Workbooks("отчеты.xlsm").Activate

Sheets("Статистика").Range(Sheets("Статистика").Cells(2, 1), Sheets("Статистика").Cells(st, 39)).PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

Workbooks(Name).Activate

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
 
Ответить
СообщениеДоброго времени суток!
Нужно с листа одной книги скопировать данные в другую книгу, учитывая года и месяцы, так, чтобы скопировались данные полностью прошлого года, и месяцы с 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

Workbooks("отчеты.xlsm").Activate

Sheets("Статистика").Range(Sheets("Статистика").Cells(2, 1), Sheets("Статистика").Cells(st, 39)).PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

Workbooks(Name).Activate

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:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование ячеейк с листа на лист с двойным условием (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!