Страницы: 1
RSS
Поднять данные к шапке таблицы текущего листа
 
Здравствуйте,

Исходные данные - файл csv от устройства измерения оптических характеристик.
С 3-ей по 34-ую строки - цветовые координаты. С 36-ой по 67-ую  измеренные спектры. Так, например, спектр из 36-ой строки использовался для расчета цветовых координат в 3-ей строке.


Задача на примере приложенного файла:
Данные из диапазона R35C1:R67C346 перенести в R2C40.

Решить нужно средствами Power Query.

Решил задачу созданием нужных промежуточных таблиц через дублирование запроса и фильтрацией с последующим объединением справа.
Нужно другое решение, чтобы впоследствии преобразовать запрос в функцию (  (filepath)  )  для обработки большого количества файлов.

Пытался создать столбец с индексами по Position для последующего объединения, но эта затея не удалась.

Версия excel 2305.
Изменено: Oleg_220 - 15.06.2023 10:44:21 (Уточнил задачу)
 
а просто формулой ячейку K2 приравнять А35 -> ='[Пример.xlsx]так было'!A35 и протянуть на 350 столбцов и 34 строки?
в вашем формате RC - в ячейку R2C11 ввести формулу ='[Пример.xlsx]так было'!R[33]C[-10]

может постановка некорректная, но простое копирование дает 100% результат, потому и задача кажется странной
Изменено: Алексей Контев - 15.06.2023 07:06:19
 
Oleg_220, здравствуйте
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица_15_37_39_Plate_16498"]}[Content],
    c_list = List.Buffer({"Column1", "Column2", "Column3", "Column4", "Column5", "Column7", "Column9", "Column11", "Column37", "Column39"}),
    tables = Table.SplitAt(Source, 33),
    first = Table.ToRows(Table.SelectColumns(tables{0}, c_list)),
    second = Table.ToRows(tables{1}),
    all = List.Buffer(List.Zip({first, second})),
    rows = List.Buffer(List.Transform(all, List.Combine)),
    z = Table.FromRows(rows)
in
    z

Убрал колонки из первой части таблицы (как в вашем примере). Но не понял откуда взялись данные в колонках с Sheet Resistance и Distance Value. Первая строка (с названиями колонок) получилась несколько иной - у меня названия колонок идут по порядку. Код "крутится", но как-то медленновато. Пробовал через Table.FromColumns - еще медленнее получилось. Может кто-то более искушенный поможет с производительностью. Но колонок уж очень много у вас (350+).
Пришелец-прораб.
 
Alien Sphinx,
спасибо за поддержку.

Файл примера в первом сообщении обрезан. Прикладываю здесь файл без предварительной обработки, для лучшего понимания.

Значения Y L a* b* смещены для каждого набора измерений вправо, поэтому нужно убрать лишние колонки.

Значения Sheet Resistance и Distance подтягиваются из соответствующего набора в самом низу набора исходных данных NAGY Measurement Unit  из AJ263:AM294.
 
Алексей Контев,
цель - максимально автоматизировать обработку, так как речь идет про множество файлов, которые нужно привести в более-менее удобный вид.
 
Для большей наглядности схематично изобразил что должно произойти с данными  
Изменено: Oleg_220 - 15.06.2023 12:34:01
 
Вариант, который предложил Alien Sphinx, работает для файла "Пример"
https://www.planetaexcel.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=527052&am...  , но относительно медленно (с учетом того что строк в файле пример значительно меньше).

Для файла Исходные данные
https://www.planetaexcel.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=527063&am...  
моих знаний не хватает чтобы адаптировать это решение.

В итоге снова все обработал через дублирование и фильтрацию исходной таблицы с последующим объединением. Все работает, не очень быстро, но результат есть. Но как только пытаюсь применить функцию (filepath)=>  естественно  все мои продублированные запросы теряют ссылку на источник.  
Страницы: 1
Наверх