Страницы: 1
RSS
Перенос данных из другой книги в умную таблицу
 
Всем доброго дня!
Вопрос мой следующий, я никогда не работал с макросами, связанными с "умными" таблицами. Но сейчас возникла необходимость создать сводную с постоянно обновляемым источником данных (меняется количество строк). Таким источником вижу "умную" таблицу. Иначе постоянно приходится обновлять через "источник данных" для корректировки количества строк.
Как работает сейчас. Данные получаю из другой книги макросом (ниже). Данные с листа "BIGDATA" из книги "_Учет_затрат.xlsm" переносятся в таблицу в моей рабочей книге, в ней же находятся и сводные таблицы, которые формируются из полученных данных.
Код
Option Explicit
Dim aRez

Sub MoveData()
Dim fPath As String, nRw&
  
fPath = ThisWorkbook.Path
If Right(fPath, 1) <> "\" Then fPath = fPath & "\[_Учет_затрат.xlsm]" Else _
 fPath = fPath & "[_Учет_затрат.xlsm]"
Range("A1").Formula = "=COUNTA('" & fPath & "BIGDATA'!A:A)"
nRw = Range("A1").Value
Range("A1").Formula = "=ToArray('" & fPath & "BIGDATA'!A1:M" & nRw & ")"
Range("B1").Resize(UBound(aRez), UBound(aRez, 2)).Value = aRez
  
Range("A1").Clear
If IsArray(aRez) Then Erase aRez
ActiveWorkbook.Save
MsgBox "Данные обновлены", vbOKOnly, "Успешное обновление"
End Sub


Private Function ToArray(ref)
 aRez = ref
End Function

Как изменить этот макрос, чтобы данные помещались в "умную" таблицу?
если вас незаслуженно обидели, вернитесь и заслужите
 
По идее, если вставить новые данные ниже (на строчку ниже или в соседний справа столбец) "умной" таблицы, то она автоматически захватит эти данные в себя.
Если у вас умная таблица заканчивается, например, на 100 строке. Вы в какую строку вставляете новые данные?
Изменено: New - 27.07.2020 17:03:46
 
сейчас данные попадают не в умную таблицу, в обычную
завтра попробую ваш способ
если вас незаслуженно обидели, вернитесь и заслужите
 
Цитата
New написал:
если вставить новые данные ниже (на строчку ниже или в соседний справа столбец) "умной" таблицы, то она автоматически захватит эти данные в себя
Доброго дня!
Попробовал.
Сделал из "неумной" таблицы "умную", нажал кнопку с макросом. Данные вставились в строку ниже последней, но таблица стала снова "неумной".  
если вас незаслуженно обидели, вернитесь и заслужите
 
Ну, давайте ваш файл-пример и макрос, посмотрим
 
По-моему, с вашей задачей прекрасно справится Power Query.
 
Используйте именованный диапазон. Размер диапазона обновляйте после добавления новых данных. В Сводных - ссылайтесь на именованный диапазон, а не на обычный.
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
Михаил Лебедев написал:  Размер диапазона обновляйте после добавления новых данных.
Так этот способ равнозначен тому, который есть сейчас. Я точно также руками правлю размер диапазона данных.

Цитата
alexleoix написал: прекрасно справится Power Query
Я правильно понял, что ваше предложение включает в себя отказ от книги с макросом и "подтягивание" данных напрямую из первоисточника в PQ?

Цитата
New написал: йл-пример и макрос, посмотрим
источник - откуда берем
приемник - где обрабатываем и делаем сводную
если вас незаслуженно обидели, вернитесь и заслужите
 
teofast, можно вернуться и добавить ответ в предыдущее сообщение,  незачем очереди  создавать
 
vikttur,на будущее учту.
Сейчас сообщения уже удалить не могу
если вас незаслуженно обидели, вернитесь и заслужите
 
Я так понимаю, что макрос переписывает, а не дописывает данные.
В текущем варианте, проще всего переключиться на PQ, запрос выдаст умную таблицу и по ней можно свободно строить.

Но если говорить про минимум изменений, то это решение Михаил Лебедев - именованный диапазон.
Вкладка формулы -> Задать имя -> Диапазон =СМЕЩ($B$1;0;0;СЧЁТЗ(B:B);13)

Создать сводную и в диапазон указать Имя.

Тогда и макрос можно не менять
 
Вопрос можно считать решенным.
Воспользовался решением Михаила Лебедева с подсказкой kain'а. Всё действительно просто.
Спасибо всем за участие!
если вас незаслуженно обидели, вернитесь и заслужите
 
Цитата
teofast написал: Сейчас сообщения уже удалить не могу
Я Вам и не писал про удаление, но только про объединение. Сделал и это вместо Вас. А 4-5 минут потраченного на Вас времени никто уже не вернет...
Страницы: 1
Наверх