Страницы: 1
RSS
Объединение таблиц в сводный файл с учетом данных вне основной таблицы
 
Добрый день!
Необходимо свести данные ведомостей по разным объектам в общую таблицу. В верхних строках ведомости указаны данные по объекту, такие как общий период замеров, адрес и т.п., а ниже в столбцах данные замеров разных показателей. Во всех ведомостях наименования столбцов одинаковые, форма стандартная, в нее нельзя вносить изменения.

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

В power query я полный новичок, сколько искала информацию по объединению таблиц, не нашла можно ли горизонтальную часть соединить с вертикальной частью.
 
Создайте пустой запрос, поместите туда этот код, поменяйте полный путь к вашему файлу и название листа с ведомостью на правильные.
m
Пришелец-прораб.
 
Julykus, в power query можно обратиться к значению "ячейки" (т.к. понятия ячейка в PQ нет, в отличие от excel) через обращение к пересечению строки и столбца таблицы, при этом в качестве таблицы вы можете сослаться на какой-либо предыдущий шаг, на котором таблица получена. Значение в каждой "ячейке" вы можете вставить в пользовательский столбец, т.е. весь столбец будет заполнен только одним этим значением.
Т.е., создаете пользовательский столбец, в нем пишите   = название_шага[название столбца]{номер строки сверху начиная с 0}
обратите внимание какие скобки используются
название шага можно писать без кавычек и решеток если в нем нет пробелов, иначе #"название шага"[название столбца]{номер строки сверху начиная с 0}
У меня сделано все кнопками. Переименование столбцов -  вручную т.к. лень было по-другому делать, можно сделать несколькими способами.
В моем коде "предыдущий шаг" - это шаг с названием "повышенные_заголовки". Т.е. я в каждом новом пользовательском столбце последовательно обращаюсь к одной и той же таблице в предыдущем шаге, но каждый раз к разным строкам (выделены жирным) в одном столбце [Column6], в котором при загрузке исходного файла находятся соответствующие данные.

let

  Источник = Excel.Workbook(File.Contents("C:\.........\пример (7).xlsx"), null, true),

   #"пример первичной ведомости_Sheet" = Источник{[Item="пример первичной ведомости",Kind="Sheet"]}[Data],

   Повышенные_заголовки = Table.PromoteHeaders(#"пример первичной ведомости_Sheet", [PromoteAllScalars=true]),

   #"Добавлен пользовательский объект" = Table.AddColumn(Повышенные_заголовки, "Сезон проведения замеров", each Повышенные_заголовки[Column6]{0}),

   #"Добавлен пользовательский объект1" = Table.AddColumn(#"Добавлен пользовательский объект", "Адрес", each Повышенные_заголовки[Column6]{1}),

   #"Добавлен пользовательский объект2" = Table.AddColumn(#"Добавлен пользовательский объект1", "Наименование категории", each Повышенные_заголовки[Column6]{2}),

   #"Добавлен пользовательский объект3" = Table.AddColumn(#"Добавлен пользовательский объект2", "Количество расчетных единиц", each Повышенные_заголовки[Column6]{3}),

   #"Добавлен пользовательский объект4" = Table.AddColumn(#"Добавлен пользовательский объект3", "Период проведения измерений", each Повышенные_заголовки[Column6]{4}),

   #"Переупорядоченные столбцы" = Table.ReorderColumns(#"Добавлен пользовательский объект4",{"Количество расчетных единиц", "Наименование категории", "Адрес", "Сезон проведения замеров", "ВЕДОМОСТЬ", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Период проведения измерений"}),

   #"Удаленные верхние строки" = Table.Skip(#"Переупорядоченные столбцы",6),

   #"Переименованные столбцы" = Table.RenameColumns(#"Удаленные верхние строки",{{"ВЕДОМОСТЬ", "Дата проведения измерений"}, {"Column2", "Время проведения измерений"}, {"Column3", "Дата предыдущего замера"}, {"Column4", "№ контейнера (бункера)"}, {"Column5", "Объем контейнера"}, {"Column6", "Наполнение контейнера, %"}, {"Column7", "Масса наполненного контейнера"}, {"Column8", "Масса порожнего контейнера"}, {"Column9", "Масса груза"}}),

   #"Удаленные верхние строки1" = Table.Skip(#"Переименованные столбцы",2),

   #"Замененное значение" = Table.ReplaceValue(#"Удаленные верхние строки1",null,"",Replacer.ReplaceValue,{"Дата проведения измерений", "Время проведения измерений", "Дата предыдущего замера"}),

   #"Строки с примененным фильтром" = Table.SelectRows(#"Замененное значение", each ([#"№ контейнера (бункера)"] <> null))

in

   #"Строки с примененным фильтром"

Изменено: voler83 - 04.04.2024 12:31:32
 
AlienSx, как тут вставлять текст сообщения в сворачивающийся список как у вас?
 
voler83, Оформление сообщения в теме (любая ветка)
 
Спасибо, буду пробовать!
Страницы: 1
Наверх