Страницы: 1
RSS
Сбор конкретных данных из разных книг в одну таблицу
 

Здравствуйте.

Имеется 7-8 разных файлов, в которых ведется отчетность на том или ином производственном участке. Каждый файл уникальный. Но у каждого файла есть 3-4 одинаковых столбца: марка, вход, выход и масса - эти столбцы в разных документах идут на разных позициях.

Цель: сделать одну обновляемую сводную таблицы по всех участках от марки (строки) и наименования участка (столбцы), в ячейках - кг.

Как это лучше всего организовать?

Попробовал через Power Query. На каждый файл делаю отдельный запрос на отдельный лист - не удобно, также не пойму, как после такой разбивки можно сделать сводную таблицу (попросту не дает).

Можно ли в PQ за один запрос открыть поочередно 7-8 файлов и также поочередно привести их к одной структуре?

Или какими путями/способами можно решить данную проблему?

Благодарю за помощь.

Изменено: EvgeniyLFC - 15.07.2019 08:11:30
 
Цитата
EvgeniyLFC написал: Имеется 7-8 разных файлов,
...и ни одого примера в теме.
 
vikttur, а как их показать, если размер примера ограничен, а файлы весят от 1 мб?
Да и что показывать, если я сам спрашиваю решение?
Мне бы понять - можно ли в PQ это организовать? Если да, то по какой схеме действий идти. Если нет, то есть ли вообще решение?
 
Цитата
EvgeniyLFC написал: размер примера ограничен, а файлы весят от 1 мб
оставьте в файлах десять строк и закиньте три файла
 
EvgeniyLFC, Вы пишете о рабочих файлах, Вам - о примерах. разница есть?
 
EvgeniyLFC, без примера и из того, что вы написали предположу, что после обработки файла вы выгружаете каждый запрос на новый лист вашей активной книги, в которой хотите построить сводную.

Вместо выгрузки на лист, сделайте только подключение. Далее все ваши запросы объедините в один, также через PQ. Далее решайте как вы ходите видите ваш объеденный запрос, в виде выгруженного на лист запроса или в виде сводной таблицы (если сводной) то запрос не обязательно выгружать на лист, можно сделать также просто подключение к полученному сводному запросу и построить сводную таблицу на основе запроса.
 
Подготовил примеры.

Есть три файла: Участок 1, Участок 2 и Участок 3.
В каждом файле своя иерархия заполнения данных, но везде есть столбцы "Марка", "Приход в кг.", "Дата выхода"

Что нужно в конечном итоге: сводную таблицу, в которой столбцы - это названия участков (Участок 1, Участок 2 и Участок 3), строки - это "Марка", а в значениях - "Приход в кг.", если "Дата выхода" пуста (если заполнена, то "Приход в кг." не считается).

Как это можно реализовать в PQ через один запрос?
Через несколько запросов на каждый лист также не вариант, так как потом сводная таблица не строится из данных на разных листах.

Файлы удалены - превышение допустимого размера вложения [МОДЕРАТОР]
Изменено: EvgeniyLFC - 15.07.2019 08:11:11
 
Ребят, ну подскажите, пожалуйста, кто знает. Как можно решить проблему?
 
Цитата
EvgeniyLFC написал:
но везде есть столбцы "Марка", "Приход в кг.", "Дата выхода"
ни в одном файле не встретил
 
Цитата
artyrH написал:
ни в одном файле не встретил
Привет, Артур.
Ну, марку и приход найти можно, а вот почему не представлен желаемый результат, как того требуют правила - загадка. Видимо ТС предпочитает медленный, но верный подход последовательных приближений. :)
 
Андрей VG, как я представлю желаемый результат, если я и спрашиваю как это сделать?!
Расписал уже подробно, как мог. Что там не понятно было написано?
 
Андрей VG, здравствуйте
EvgeniyLFC,  сводную не строил. попробуйте этот запрос
Код
let
  a= (tab) as table =>

  let
    #"Promoted Headers1" = Table.PromoteHeaders(tab, [PromoteAllScalars=true]),
    #"Promoted Headers2" = Table.PromoteHeaders(#"Promoted Headers1", [PromoteAllScalars=true]),
    #"Removed Other Columns" = Table.SelectColumns(#"Promoted Headers2",{" Марка сплава", "Кол-во, кг", "Дата сдачи"})
in
    #"Removed Other Columns",



    Source = Folder.Files("C:\abc"),
    #"Filtered Rows" = Table.SelectRows(Source, each Text.StartsWith([Name], "Участок ")),
    #"Added Custom" = Table.AddColumn(#"Filtered Rows", "Пользовательская", each Excel.Workbook([Content])),
    #"Expanded {0}" = Table.ExpandTableColumn(#"Added Custom", "Пользовательская", {"Data"}),
    #"Added Custom1" = Table.AddColumn(#"Expanded {0}", "Data2", each a([Data]))[[Name],[Data2]],
    #"Expanded {0}1" = Table.ExpandTableColumn(#"Added Custom1", "Data2", {" Марка сплава", "Кол-во, кг", "Дата сдачи"})
in
    #"Expanded {0}1"
 
artyrH, попробовал - получилось то, что нужно! Огромная благодарность.
Можно задать один вопрос - те функции, что указаны в коде, можно сделать через панель управления или они вбиваются только через расширенный редактор?
Просто, не все функции я понял, как выполняются.
 
EvgeniyLFC, все шаги кнопочные. единственное, функцию делал, поглядывая сюда.
 
Цитата
EvgeniyLFC написал:
Сбор конкретных данных из разных книг в одну таблицу
открываете книги с данными
последовательно, ячейка за ячейкой выбираете из конкретных книг конкретные данные:
ДанныеИзКниги = Workbooks("Имя конкретной книги").Worksheets("Имя конкретного листа в ней").Range("Имя конкретной ячейки на этом листе")

по заданному вопросу, вроде все.
а теперь можно обсудить что Вам реально нужно из тех книг, т.е.
решить не общую задачу
"получить конкретные данные из книги"
а Вашу задачу:
"как вот из таких книг получить вот сюда, вот такие данные?"
Изменено: Ігор Гончаренко - 16.07.2019 13:10:53
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, может быть выразился изначально не так, как нужно, но в описании подробно раскрыл вопрос-проблему.
Страницы: 1
Наверх