Раскидываем иерархию через List.Generate
#АнатомияФункций – List.Generate
Всем привет!
Несколько раз вопрос всплывал в чате и я уже давал образчики кода, но захотелось записать видос – как всегда, на Ютубе.
Код вышел несложный, складываю сюда, чтобы можно было поиском находить
Ну а объяснение по ссылке - смотрим, подписываемся, ставим лайк, пишем комменты. )))
Надеюсь, было полезно.
Всех благ!
@buchlotnik
#АнатомияФункций – List.Generate
Всем привет!
Несколько раз вопрос всплывал в чате и я уже давал образчики кода, но захотелось записать видос – как всегда, на Ютубе.
Код вышел несложный, складываю сюда, чтобы можно было поиском находить
let
from = Excel.CurrentWorkbook(){[Name="Источник"]}[Content],
lst = List.Buffer(Table.ToList(from,(x)=>x)),
max = List.Max(from[уровень]),
n = List.Count(lst),
gen=List.Generate(
()=>[i=0,j=lst{i},l=List.ReplaceRange(List.Repeat({null},max),j{0}-1,1,{j{1}})&List.Skip(j,2)],
(x)=>x[i]<n,
(x)=>[i=x[i]+1,j=lst{i},l=List.FirstN(x[l],j{0}-1)&{j{1}}&List.Repeat({null},max-j{0})&List.Skip(j,2)],
(x)=>if (lst{x[i]+1}?{0}? ?? 0)>x[j]{0} then null else x[l]
),
nms = List.Transform({1..max},(x)=>"заголовок "&Text.From(x))&List.Skip(Table.ColumnNames(from),2),
to=Table.FromList(List.RemoveNulls(gen),(x)=>x,nms)
in
to
Ну а объяснение по ссылке - смотрим, подписываемся, ставим лайк, пишем комменты. )))
Надеюсь, было полезно.
Всех благ!
@buchlotnik