Страницы: 1
RSS
Перенести таблицу на другой лист
 
Всем привет!

Помогите, пожалуйста, написать макрос, который
1. переносит данные из таблицы на Листе1 и вставляет их в конец таблицы перед итогом на Листе2 в столбцы E:F
2. добавляет в столбец В таблицы, текущую дату. На каждой строке.

Заранее благодарен!
 
Как-то так
Код
Sub tt()
Dim L As Long: L = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row
Dim L2 As Long: L2 = Sheets("Лист1").Cells(Rows.Count, 10).End(xlUp).Row
Sheets("Лист2").Cells(L - 1, 5).ListObject.ListRows.Add AlwaysInsert:=False
Sheets("Лист1").Range("J2:K" & (L2 - 1)).Copy Destination:=Sheets("Лист2").Cells(L, 5)
With Sheets("Лист2").Range("B" & L & ":B" & (L + L2 - 3))
.NumberFormat = "DD.MMM"
.Value = Date
End With
End Sub



 
МВТ, Спасибо, данные переносятся, но добавляются не в таблицу, а ниже, под неё. Можно как-то сделать чтобы они оказывались внутри таблицы?
 
кросс http://www.cyberforum.ru/ms-excel/thread1423109.html
 
для вставки строк в Умную Таблицу у меня вариант такой работает
!! (листы "есть" и "надо" по коду переименовать на свои)
на примере вашей таблицы
Код
Sub jj()
Dim ly As Long, lw As Long
 
ly = Sheets("есть").Cells(Rows.Count, 10).End(xlUp).Row
lw = Sheets("надо").Cells(Rows.Count, 1).End(xlUp).Row

Sheets("надо").Cells(lw - 1, 5).ListObject.ListRows.Add AlwaysInsert:=True
Sheets("надо").Cells(lw, 5).Select     '!!!
Sheets("есть").Range("J2:K" & (ly - 1)).Copy Selection
'=== если надо дописать дату в нужном формате
End Sub
если нужны ещё и даты - то из примера MBT - до End Sub вписать:
Код
Dim lz&
lz = Sheets("надо").Cells(Rows.Count, 1).End(xlUp).Row - 1 'ИТОГО
With Sheets("надо").Range("B" & lw & ":B" & lz)
.NumberFormat = "DD.MMM"
.Value = Date
End With
Изменено: JeyCi - 17.04.2015 12:58:50
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Сталкивался с такой проблемой, если умная таблица... Определение последней строки .Cells(Rows.Count, 1).End(xlUp).Row будет считаться по-разному,- в зависимости от того, какая в этот момент ячейка активна - в таблице или за её пределами.
 
проверила - до определения lz - .Activate ячейку в таблице и за пределами таблицы - проблему не видно... всё ок... но Юрий М, может, подсажете как боролись?.. полагаю, как вариант (без шапки и без строки-итогов)
Код
lz = Sheets("надо").Cells(lw - 1, 5).ListObject.ListRows.Count
... уже спасибо за существенную деталь
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Как боролся,- уже не помню, вроде, принудительно активировал ячейку. Но помню, что очень долго не мог понять, почему номер последней строки иногда отличается на единицу. Да и не так давно RAN столкнулся с такой же проблемой. Тему не запомнил...
 
Bol23, странно, когда проверял, у меня работало как надо. Правда, с учетом того, что писал Юрий М,  не помню, какая ячейка была активна в тот момент: внутри таблицы или вне ее. Попробуйте так, теоретически, при таком варианте все рассчитывается внутри объекта таблица
Код
Sub tt()
Dim L As Long: L = Sheets("Лист2").Range("Таблица3").Rows.Count + 1
Dim L2 As Long: L2 = Sheets("Лист1").Cells(Rows.Count, 10).End(xlUp).Row
For I = 1 To L2 - 2
    Sheets("Лист2").Range("Таблица3").Cells(L - 1, 5).ListObject.ListRows.Add AlwaysInsert:=False
Next I
Sheets("Лист1").Range("J2:K" & (L2 - 1)).Copy Destination:=Sheets("Лист2").Range("Таблица3").Cells(L, 5)
With Sheets("Лист2").Range("Таблица3").Range("B" & L & ":B" & (L + L2 - 3))
.NumberFormat = "DD.MMM"
.Value = Date
End With
End Sub

 
Цитата
Юрий М написал: почему номер последней строки иногда отличается на единицу
в #7 - такая же ситуация - строки считаются без шапки и итогов...
.Cells(Rows.Count, 1).End(xlUp).Row тоже, наверно, могло не видеть строку Итоги, если считать по колонке с пустым значением в этой строке... гипотеза... не проверяю, но буду иметь ввиду - спасибо
Изменено: JeyCi - 17.04.2015 13:58:16
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
Bol23 написал: данные переносятся, но добавляются не в таблицу, а ниже, под неё
Я думаю, что проблема как раз в том, что я и говорил )
 
JeyCi, МВТ, Юрий М,  Спасибо всем, оба варианта работают, но только если перейти в начале на Лист2, а в конце макроса вернутся на Лист1. По другому не получается.
Страницы: 1
Наверх