209 похожих чатов

Может тогда группироваться по первым цифрам кода, а не по

длине?

7 ответов

8 просмотров

Решил через генератор, получилось интересно. Завтра покажу решение. Кривое, но работает (если данные чистые, в реале оказалось GIGO, куча незакрытых или неправильно закрытых групп)

Mikhail-Muzykin Автор вопроса

ща доделаю через фильтрацию словаря, тоже криво - но интересно)))

Mikhail Muzykin
ща доделаю через фильтрацию словаря, тоже криво - ...

Вот на генераторе. После шага Pivoted надо еще один генератор запилить на группировку и filldown, но пока забил let Source = Excel.CurrentWorkbook(){[Name="SourceData"]}[Content], Sorted = Table.Sort(Source,{{"code", Order.Ascending}}), SelectedCols1 = Table.RemoveColumns(Sorted,{"totaling"}), ToList = List.Buffer(Table.ToRecords(SelectedCols1)), Generator = List.Generate( ()=>[lvl = 1, i = 1, r=ToList{0}], each [i]<=List.Count(ToList), each [i = [i]+1, lvl = if r[type]="Begin-Total" then [lvl]+1 else if r[type]="End-Total" then [lvl]-1 else [lvl], r=ToList{i-1}] ), ToTable = Table.FromRecords(Generator, type table [lvl = Int64.Type, i = Int64.Type, r = [code = text, type = text, name = text]]), Expanded = Table.ExpandRecordColumn(ToTable, "r", {"code", "type", "name"}, {"code", "type", "name"}), ModifyLvl = Table.AddColumn(Expanded, "lvl2", each if [type]="Begin-Total" then [lvl]-1 else [lvl], Int64.Type), Filtered = Table.SelectRows(ModifyLvl, each ([type] <> "End-Total")), SelectedCols2 = Table.SelectColumns(Filtered,{"i", "code", "type", "name", "lvl2"}), Lvls = List.Buffer(List.Transform(List.Sort(List.Distinct(SelectedCols2[lvl2])), Text.From)), Pivoted = Table.Pivot(Table.TransformColumnTypes(SelectedCols2, {{"lvl2", type text}}, "ru-RU"), Lvls, "lvl2", "name"), Sorted2 = Table.Sort(Pivoted,{{"i", Order.Ascending}}), FilledDown = Table.FillDown(Sorted2,{"0", "1"}), TypeT = Value.Type(FilledDown), Grouped1 = Table.Group(FilledDown, {"1"}, {{"t", each Table.FillDown(Table.Sort(_, {"i"}), {"2"}), TypeT}}), Expanded1 = Table.Combine(Grouped1[t]), Grouped2 = Table.Group(Expanded1, {"0", "1", "2"}, {{"t", each Table.FillDown(Table.Sort(_, {"i"}), {"3"}), TypeT}}), Expanded2 = Table.Combine(Grouped2[t]), FilteredStandard = Table.SelectRows(Expanded2, each ([type] = "Standard")), SelectedCols3 = Table.SelectColumns(FilteredStandard,{"code"} & Lvls) in SelectedCols3

Maxim Zelensky
Вот на генераторе. После шага Pivoted надо еще оди...

Аж страшно стало. Оказывается, у моих любимых бухгалтеров прекрасные источники 🤔

Дмитрий Касьянов
Аж страшно стало. Оказывается, у моих любимых бухг...

Бухи ваще самые безобидные. Разобрать шапку в три этажа и объединенные ячейки это все фигня.

Похожие вопросы

Обсуждают сегодня

Карта сайта