Страницы: 1
RSS
Сбор данных с разных листов из определенных ячеек
 
Доброго времени суток.
Помогите пожалуйста решить вопрос сбора необходимых данных.
В прикрепленном файле примеры таблиц на нескольких вкладках и на первой вкладке описание как бы хотелось чтоб это работало.

Спасибо.
 
Вариант на Power Query:
Код
let
    Source1 = Excel.Workbook(File.Contents(Excel.CurrentWorkbook(){[Name="Адрес_файла"]}[Content]{0}[Column1]), null, true),
    FilteredRows = Table.Combine( List.Transform( Table.SelectRows(Source1, each ([Name] <> "СВОД"))[Data], each Table.PromoteHeaders(_, [PromoteAllScalars=true] ) ) ),
    GroupedRows = Table.Combine( Table.Group(FilteredRows, {"артикул"}, {{"Таб", each Table.LastN(_, 1), type table}}) [Таб] ),
    Source2 = Excel.CurrentWorkbook(){[Name="Таблица1_2"]}[Content],
    SelectedColumns = Table.SelectColumns(Source2,{"ячейка", "артикул"}),
    MergedQueries = Table.NestedJoin(SelectedColumns,{"артикул"},GroupedRows,{"артикул"},"листы",JoinKind.LeftOuter),
    Expanded = Table.FirstN(Source2,0) & Table.ExpandTableColumn(MergedQueries, "листы", {"вес т.", "длина", "ширина", "высота", "объем", "кол-во шт.", "партия"})
in
    Expanded

Пишите в табличку артикулы, ПКМ по ней и выбираете "обновить". Подтянутся значения со всех листов книги кроме листа СВОД.
Вот горшок пустой, он предмет простой...
 
К сожалению у меня нет надстройки Power Query и установить ее не получится. Есть другой вариан?
 
Цитата
anddrei55 написал:
Есть другой вариан?
У меня нету. Ожидайте спецов по VBA.
Вот горшок пустой, он предмет простой...
 
.
Код
=ВПР($I2;ДВССЫЛ("'Склад "&A2&"'!$A$1:$H$9");8;)
 
artyrH, если что, в описании задачи не было указано что в столбце А это номера складов. Склады нужно определять по артикулу.
Вот горшок пустой, он предмет простой...
 
artyrH, спасибо, но так не подходит. Нужен поиск по артиклу.
 
А если артикул повторяется на листах то с какого вносить? на одном листе, я так понимаю,  из повторяющихся значений выбираем то, которое идет ниже в таблице?
таблицы с артикудами всегда имеют одинаковую структуру?
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, на одном листе из повторяющихся значений выбираем то, которое идет ниже в таблице, с последней строки с данными. Таблицы с артикудами всегда имеют одинаковую структуру, не изменны.
 
пробуйте, на выложенном файле.
Код
Sub main()
    Dim objDic As Object
    Dim sht As Worksheet
    Dim txt$, i&, lrow&
    Dim arr()
    Set objDic = CreateObject("scripting.dictionary")
    For Each sht In ThisWorkbook.Worksheets
        If UCase(sht.Name) <> UCase("свод") Then
            arr = sht.UsedRange.Value
            For i = 1 To UBound(arr)
                txt = arr(i, 1)
                objDic.Item(txt) = arr(i, 8)
            Next i
        End If
    Next sht
    Set sht = Worksheets("СВОД")
    arr = sht.[a1].CurrentRegion.Value
    For i = 1 To UBound(arr)
        txt = arr(i, 9)
        arr(i, 2) = objDic.Item(txt)
        sht.[a1].Resize(UBound(arr), UBound(arr, 2)).Value = arr
    Next i
End Sub
Изменено: Nordheim - 12.07.2019 12:22:48
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, работает. Спасибо огромное!!!
 
ищет первое значение. для последнего надо просмотр прикрутить
Код
=ВПР($I2;ВЫБОР(ПОИСКПОЗ(I2;{"крот":"дерево":"вода"};);'Склад 1'!$A$2:$H$11;'Склад 2'!$A$2:$H$11;'Склад 3'!$A$2:$H$11);8;)
 
Nordheim, подскажите еще пожалуйста. Как можно всавить ссыки на другие файлы с такими таблицами (определенные файлы в сети с определенной вкладкой, взамен вкладок в этом файле)?
 
anddrei55, Не совсем понял, что имеется ввиду? Какие ссылки куда вставить? Код отрабатывает в пределах одной книги.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
Код отрабатывает в пределах одной книги
, вот а если эти таблицы не в этой книги, а в других файлах? Как можно прикрутить ссылки на другие файлы и на опреденные страницы? Например таблица из этого файла с вкладки "Склад 1" находится в другом файле по ссылке "C:\Users\Andrey.Ivanov\Desktop\склад 1.xls", лист "Таблица".
 
anddrei55, Правила форума я так понимаю перед созданием темы пункт 2.3 вы не читали и хотелки растут на дрожжах? т.е. сначало вы выкладываете пример что у вас всё в 1 файле, вам помогают и тут вы заявляете что у вас все таблицы в разных файлах....никакого уважения к помогающим.....
Изменено: Wild.Godlike - 12.07.2019 13:04:55
 
Цитата
anddrei55 написал:
вот а если эти таблицы не в этой книги, а в других файлах?
Это уже совсем другая история, выходящая за рамки этой темы.
"Все гениальное просто, а все простое гениально!!!"
 
Wild.Godlike, я тз не изменял, все супер получилось. Попросил помоч на тот случай, если вдруг появиться необходимость подключить другие таблицы, из других файлов, то как в таком случае можно будет и ссылки приктрутить.
 
В вашем варианте, ссылки никак не прикрутишь, тут нужен алгоритм перебора нужных книг, а самое главное алгоритм выдергивания нужной информации удовлетворяющей условию.
"Все гениальное просто, а все простое гениально!!!"
 
anddrei55, как вариант: скопировать нужные листы из других книг  в одну книгу и запустить, в этой книге, макрос Nordheim,
 
Я очень силно извиняюсь, но всеже прошу еще раз помочь решить этот вопрос. Изначально я не совсем разобрался как хотел бы чтоб это работало и поставил не совсем правильно вопрос. Сейчас же подготовился лучше. В файле "Пример" я составил таблицы и расписал все.
 
Не знаю правильно ли, но результат соответствует Вашему примеру.
Изменено: gling - 13.07.2019 15:38:06
 
gling, спасибо, но в этом варианте формула ищет первую строку с подходящим артикулом. Если на вкладках несколько строк с одинаковыми № с-с, то необходимо чтоб артикул брался с последней строчки. Это крайне важное условие. Я думал прикрутить такую ссылку, но в таком варианте нужно будет ставить во всех вкладках сортировку строк от новых к старым, это по определенным причинам не подходит.
 
Цитата
anddrei55 написал:
необходимо чтоб артикул брался с последней строчки
Проверьте такой вариант.
 
gling, спасибо. Все работает отлично.
Страницы: 1
Наверх