Страницы: 1
RSS
Копирование несмежных столбцов умной таблицы, Заполнение умной таблицы данными из другой
 
Добрый день форумчане! Не так часто к вам обращаюсь, так как многое можно найти внимательно прочитав форум. Но в этот раз прошу вашей помощи. Есть 2 таблицы: Задания, которая заполняется на протяжении месяца и Работа в которой эти данные собираются накоплением за прошедшее время. Необходимо перенести данные из Задания в Работа. Все осложняется умными таблицами, так как я понимаю необходимо оставлять первую строку Задания для сохранения формул и копированием в последнюю пустую строку Работа, плюс не все столбцы смежные. Попробовал решить это Макроридером, но результат далек от совершенства в связи с недостаточным знанием VBA. В связи с этим и прошу вашей помощи Знатоки.
putnik
 
Код
Sub Macro()
    Dim tblRab As ListObject, tblZadan As ListObject
    Dim lngLastRow As Long, lngRowsCount As Long
    Application.ScreenUpdating = False
    Set tblRab = Worksheets("Работа").ListObjects("Работа")
    Set tblZadan = Worksheets("Задания").ListObjects("Задания")
    lngLastRow = tblRab.Range.Rows.Count + 1
    lngRowsCount = tblZadan.DataBodyRange.Rows.Count
    tblRab.Resize tblRab.Range.Rows(1).Resize(tblRab.Range.Rows.Count + lngRowsCount)
    tblRab.Range.Cells(lngLastRow, 3).Resize(lngRowsCount, 1).Value = tblZadan.DataBodyRange.Columns(1).Value
    tblRab.Range.Cells(lngLastRow, 5).Resize(lngRowsCount, 1).Value = tblZadan.DataBodyRange.Columns(2).Value
    tblRab.Range.Cells(lngLastRow, 6).Resize(lngRowsCount, 1).Value = tblZadan.DataBodyRange.Columns(4).Value
    Application.ScreenUpdating = True
End Sub
 
Большое спасибо, буду пробовать. А то уже и не надеялся.
putnik
 
Еще раз спасибо за помощь, но есть проблемы: 1. вставляет в 3-ю строку таблицы, т.е. шапка, пустая, а потом вставка. 2. Исходная таблица не очищается, просто удаление строк листа не получится т.к. рядом есть другие таблицы, поэтому только удалением строк таблицы, а с этим у меня и проблема.
putnik
 
впервый раз вставит не туда, а потом будет вставлять так,как надо. из-за одного раза стоит что-то придумывать ?
после работы макроса нужно удалить строки в каком-то листе?
Изменено: Karataev - 04.03.2015 15:56:51
 
Нужно очистить исходную таблицу на листе Задания за исключением первой строки, чтобы можно было заносить данные нового месяца, а первая строка просто исправляется, чтоб сохранить формулы в умной таблице.
putnik
 
между строками 12 и13 добавьте такие строчки
Код
    If tblZadan.Range.Rows.Count > 2 Then
        tblZadan.Range.Rows(3 & ":" & tblZadan.Range.Rows.Count).Delete
    End If
Изменено: Karataev - 04.03.2015 16:10:06
 
Да работает, хотя удаляет и первую строку, а я ее хотел бы сохранить чтобы там осталась формула и каждый раз ее не заносить. Еще раз огромное спасибо за помощь. Попробую разобраться а то Макроридером было совсем другое. Пытаюсь сравнить, могли бы добавить пару комментариев для ясности.
putnik
 
Сразу не заметил поправку, все отлично. Огромное Вам спасибо.
putnik
 
вставил общие комментарии.если по какому-то пункту останется вопрос,то задавайте
Скрытый текст
Изменено: Karataev - 04.03.2015 16:54:04
 
Я действительно Вам очень благодарен. С кодом практически разобрался, а тут вижу еще Ваши комментарии. Приятно, что все именно так и понял, хотя самому до такого еще далеко. Но если разрешили - задам вопрос. " добавление в таблицу Работа снизу новых строк" необходимость этой строки? Ведь умная таблица должна расширяться автоматически при добавлении значений ниже или правее основной таблицы.
putnik
 
я тоже так думал,что таблица будет автоматически расширяться,но почему-то не расширяется .
Изменено: Karataev - 05.03.2015 10:19:28
 
Да я проверил и действительно эту строку можно убрать, макрос работает замечательно, как и задумывалось. Большое Вам спасибо.
putnik
Страницы: 1
Наверх