Страницы: 1
RSS
Сводная таблица с нескольких листов
 
Здравствуйте. Подскажите пожалуйста, как объединить данные из нескольких листов в одну сводную таблицу. По решениям на форуме не выходит получить нужный результат. Для примера во вложении. Имеются листы с названием товара (много), внутри одинаковые таблицы, где поставщики, наименование товара точное и масса товара. Необходимо свести в одну таблицу по фирмам, как представлено на листе 3. Для примера два первых листа это исходные, а третий это результат. Конструктором сводных таблиц так и не удалось свести в нужный вид. Помогите пожалуйста, а то совсем уже голову надорвала. :'(
Скрытый текст
 
Цитата
Evegrish написал: По решениям на форуме не выходит получить нужный результат.
Значит вам нужен другой форум.
Или же попытать счастья в разделе "Работа" - в нем размещают свои заказы те, кому самому лень или некогда решать свои проблемы... ;)  
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Цитата
Evegrish написал: Для примера во вложении
То ли это вложение которое нужно для этого форума?
Цитата
Evegrish написал: Имеются листы с названием товара (много),
Как много? Меняется ли это много?
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Как много? Меняется ли это много?
Ну с пару десятков. И меняется количество.
 
Evegrish, эту статью из "Приемов" читали?
 
да
 
Цитата
БМВ написал:
То ли это вложение которое нужно для этого форума?
По вопросам из тем форума, личку не читаю.
 
Доброе время суток.
Цитата
Evegrish написал:
да
И что, чем не угодило?
 
Цитата
Андрей VG написал:
И что, чем не угодило?
У меня вот, что макрос сделал:
 
Цитата
Evegrish написал: вот, что макрос сделал
вот ведь негодник, поставьте его в угол.

Вы со сводными таблицами работали хоть раз?
По вопросам из тем форума, личку не читаю.
 
Evegrish, Вас БМВ дважды спросил - не ошиблись с вложением? Он намекает на то, что на форуме по Excel. и файлы соответствующие нужно показывать, а не картинки.
 
Цитата
Evegrish написал:
У меня вот, что макрос сделал:
А в чём проблема добавить на каждый лист данных столбец с названием товара? Ну, или макрос чуть переделать, чтобы в сводную выводилось название листа источника данных. Не вижу проблем. Можно их чётче озвучить?
 
Цитата
Андрей VG написал:
Ну, или макрос чуть переделать, чтобы в сводную выводилось название листа источника данных
Андрей, С празником.  Я написал несколько постов назад но потом удалил. Вы правы надо корректировать код и так как там через запрос, то добавлять имя листа только сложнее, если не ввести это в первичные таблицы (при этом автоматически). В этом случае и на мой взгляд просто коирование на временный источник для сводной - проще, но обновление придется или контролировать и запускать по событию обновления сводной, или руками.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
С празником
Спасибо, Михаил. И вас также с Праздником!
Я бы сделал бы, в отличии от Павлова, подключение, например таким кодом (пусть есть лист "Список" на котором находится "умная" таблица с одним столбцом, в котором введены имена интересующих для сбора листов)
Код
Public Sub createProcutConnectionConntection()
    Const baseConn As String = "ODBC;DBQ=$1;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DriverId=1046;MaxBufferSize=2048;PageTimeout=5;ReadOnly=1;"
    Const baseSQL = "Select '$1' As [Товар], [Фирма], [Название], [Масса] From [$1$]"
    Dim sConn As String, sSQL As String, i As Long, arrList As Variant
    Dim lCol As ListColumn
    sConn = Replace$(baseConn, "$1", ThisWorkbook.FullName)
    Set lCol = ThisWorkbook.Worksheets("Список").ListObjects(1).ListColumns(1)
    arrList = lCol.DataBodyRange.Value
    sSQL = ""
    For i = 1 To UBound(arrList, 1)
        If sSQL = "" Then
            sSQL = Replace$(baseSQL, "$1", arrList(i, 1))
        Else
            sSQL = sSQL & " Union All " & Replace$(baseSQL, "$1", arrList(i, 1))
        End If
    Next
    ThisWorkbook.Connections.Add _
        "Товары_" & Format$(Now, "yyyymmdd_hhnnss"), _
        "Подключение для сводной по товарам", _
        sConn, _
        sSQL, _
        xlCmdSql
End Sub

А уже по этому подключению бы строил сводную. Если состав листов не меняется, а меняются только данные в них, то достаточно только обновить сводную. Если же есть изменения и по составу листов, то
Либо написать макрос, который меняет в существующем запросе текст SQL запроса, плюс, если нужно, то корректирует путь к источнику данных.
Либо всё это самое можно "ручками" подредактировать в определении подключения, как путь так и запрос - обычный текст, тут и начинающий по аналогии разберётся, всё в достаточной мере шаблонно.

Хотя, на мой вкус, такое подключение лучше делать на Power Query, отбирая по шаблону названий столбцов таблиц, получаемых с листов книги, нужные таблицы для объединения. Так и проблему с именем и путём книги можно решить и листы будут собираться автоматически при обновлении. Уже выкладывал такой вариант на форуме.
Изменено: Андрей VG - 08.04.2018 14:42:16
 
Цитата
БМВ написал: вот ведь негодник, поставьте его в угол.Вы со сводными таблицами работали хоть раз?
В чем суть вопроса? Вы считаете, что в сводную таблицу каким-то образом сами могут попасть названия листов, чтобы можно было в релевантный вид привести сводную итоговую таблицу или Вам правда интересно сколько раз я использовала сводные таблицы? Если в исходные таблицы добавить столбцы с названиями листов, то первый скрипт хорошо отработает. Как предложил увильчиво и высокомерно товарищ Андрей VG. Но его последний скрипт мне немного не понятен, в силу отсутствия знаний по SQL и VBA более глубоких, чем общие поверхностные. Зачем задавать вопросы еще более глупые, чем у автора ветки? Автор, хотя бы, создавая вопрос, и так признает свое непонимание и просьбу о помощи. А Вы решили присоединиться? Этакое коллективное оглупление? Спасибо всем за помощь. Решила просто автоматом проходиться по всем листам, создавать дополнительный столбец с название товара общего и исполнять первый скрипт в теме. Что, вроде, пока устраивает меня. И это всё чего я хотела. И это так долго обсуждалось знающими людьми. Заметьте, на англоязычных форумах, если задают вопрос, кто хочет помогает, но чтобы вот так, глумиться, сарказмировать и просто принижать - это удел только русскоговорящих. А может и бумажки, которые на улице валяются тоже Ваши? Задумайтесь, будьте уже добрее. А то в желчи все утонем. Спасибо.
 
OFF Распишитесь в получении, дамы и господа форума... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Evegrish,
Ok. Next time i will switch to English . Specialy for you.
По вопросам из тем форума, личку не читаю.
 
Offtop
Цитата
Z написал:
OFF
Да, ладно, господин Z. Это разве первый захожанин, считающий, что читать и соблюдать правила форума - это унижение достоинства?
Цитата
Evegrish написал:
увильчиво и высокомерно товарищ Андрей VG
И что было увильчивого во фразе
Цитата
Андрей VG написал:
А в чём проблема добавить на каждый лист данных столбец с названием товара?
ставшего решением
Цитата
Evegrish написал:
Если в исходные таблицы добавить столбцы с названиями листов, то первый скрипт хорошо отработает
Цитата
Evegrish написал:
Заметьте, на англоязычных форумах, если задают вопрос, кто хочет помогает, но чтобы вот так, глумиться, сарказмировать и просто принижать - это удел только русскоговорящих.
доказательсва будут?
Я так разницы не вижу, как в вопрошающих так и в отвечающих. Разве что да, вопрошающие лучше понимают, что тратят чужое время и в позу оскорблённой невинности не становятся.
 
Цитата
Evegrish написал:
Заметьте, на англоязычных форумах, если задают вопрос, кто хочет помогает, но чтобы вот так, глумиться, сарказмировать и просто принижать
нет у них просто спецов с чувством юмора.
По вопросам из тем форума, личку не читаю.
 
Андрей VG, я об этом и написала. Вам спасибо. Но будьте не такими редисками.
Страницы: 1
Наверх