Проблема в следующем. Выгружаю из "1С Бухгалтерия" (редакция 1.6) Журнал проводок. При этом одна запись делается тремя строками. Как сделать таблицу нормализованной? Чтобы каждые три строки преобразовались в одну. Чтобы потом сводную можно сделать было. Три строки через транспонирование преобразовать получилось. А как пройтись циклом по всем строкам никак не соображу( Помогите сделать запрос в Power Query.
Кроме первого столбца, который удаляется. Все остальные столбцы разворачиваются по три вправо. Например колонка 1: Период Документ Организация Становятся отдельными колонками: Период Документ Организация И таким же образом все остальные, даже если они пустые.
А третья строка AddedGroup = Table.AddColumn(AddedIndex, "группа", each Number.IntegerDivide([Индекс], 3), Int64.Type), добавляется вручную или есть функция на ленте?
Если не можешь победить беспорядок, то надо возглавить его.
Хм. И такое есть. Придется видимо переквалифицироваться с VBA на PQ. Вернее сказать дополнить его функционалом и отчасти заменить. Очень интересные возможности открываются. Спасибо! Результат устраивает. Буду разбираться.
Если не можешь победить беспорядок, то надо возглавить его.
Скажем так, после 2.5 лет знакомства с PQ он не устает меня удивлять, и на текущем уровне развития (я далеко не гуру, так чуть выше среднего) я по работе не сталкивался с задачами преобразования таблиц в удобоваримый вид, которые этим инструментом нельзя разрешить. Если только маркерами для преобразований не является форматирование ячеек. Хотя и этот вопрос в принципе решаем, вот так, например, но не на моем уровне. Ну и скорость, конечно тоже - из того что я видел: вылизанный код VBA всегда работает быстрее чем вылизанный код PQ (там своя специфическая сторона вопроса). Удачи в познании.
Александр Медведев, отвечаю на вопрос из лички. Переделал запрос чтобы было видно все по шагам. Все шаги сделаны мышкоклацательным способом. Все примененные функции при создании новых столбцов взяты отсюда.
Код
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
#"Added Index" = Table.AddIndexColumn(Источник, "Индекс", 0, 1),
#"Inserted Integer-Division" = Table.AddColumn(#"Added Index", "Целочисленное деление", each Number.IntegerDivide([Индекс], 3), Int64.Type),
#"Grouped Rows" = Table.Group(#"Inserted Integer-Division", {"Целочисленное деление"}, {{"Таблицы", each _, type table}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Пользовательская", each Table.ToRows( [Таблицы] )),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Пользовательская1", each List.Combine( [Пользовательская] )),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "Пользовательская2", each Table.FromRows( {[Пользовательская1]} )),
Custom1 = Table.Combine( #"Added Custom2"[Пользовательская2] ),
#"Promoted Headers" = Table.PromoteHeaders(Custom1, [PromoteAllScalars=true])
in
#"Promoted Headers"