Страницы: 1
RSS
Power Query, Разделить все столбцы кроме первого на три по количеству знаков
 
Имеем электронный журнал, в первом столбце предмет, во всех остальных оценки по датам.
Очень хочу транспонировать его в PQ, чтобы по столбцам предметы, а вниз даты и внизу сделать средний балл по предмету.
Все бы хорошо, но когда оценок за учебный день не одна - их ставят подряд 54,  554  и т.д. - логики никакой... даты все время будут добавляться, оценки кучкой будут ставиться то тут то там...
Интерфейсом заставить это делать не получилось, тк завтра дата будет новая  и новое название столбца...
Возник вопрос... можно ли формулой заставить PQ поделить на три все столбцы, кроме первого? (больше трех оценок в день вроде не бывает)
а потом уже спокойно  все это транспонировать?

Заранее спасибо за советы
 
Доброе время суток.
Вариант
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Отчет_об_успеваемости_и_посещае"]}[Content],
    #"Renamed Columns" = Table.RenameColumns(Source,{{"Дата", "Предмет"}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Renamed Columns", {"Предмет"}, "Дата", "Оценка"),
    #"Change To Char List" = Table.TransformColumns(#"Unpivoted Other Columns", {{"Оценка", each Text.ToList(Text.From(_))}}),
    #"Expanded {0}" = Table.ExpandListColumn(#"Change To Char List", "Оценка"),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded {0}",{{"Предмет", type text}, {"Дата", type date}, {"Оценка", Int64.Type}})
in
    #"Changed Type"
 
Добрый вечер
А можно немного поизвращаться?  :)
Код
let
    Source     = Excel.CurrentWorkbook(){[Name="Отчет_об_успеваемости_и_посещае"]}[Content],
    Columns    = List.Skip(Table.ColumnNames(Source)),
    Accumulate = List.Accumulate(Columns,Source,(a,b)=>Table.ReplaceValue(a,b,each [Дата],(c,d,e)=>if c<> null then 0 meta [Дата=d, Предмет=e,Оценки=Splitter.SplitTextByRepeatedLengths(1)(Text.From(c))] else null,{b})),
    Transform  = Table.FromRecords(List.Transform(List.RemoveNulls(List.Combine(List.Skip(Table.ToColumns(Accumulate),1))),Value.Metadata))
in Table.TransformColumnTypes(Table.ExpandListColumn(Transform, "Оценки"),{{"Оценки", type number}})
 
Андрей VG и Андрей Лящук,

Супер!!
Спасибо огромное!!!
Изменено: kashalot75 - 30.09.2019 07:07:23
 
Цитата
Андрей Лящук написал:
А можно немного поизвращаться?
А почему бы - нет? Форум открыт для свободного творчества. Спасибо! :)
Страницы: 1
Наверх