Специально в вашем случае (последующий диапазон находится внутри предыдущего) вы можете использовать этот код:
let
Source = Excel.CurrentWorkbook(){[Name="Table"]}[Content],
sort = Table.Sort(Source, List.Transform({"Post", "Chng.1", "Chng.2"}, each {_, 0})),
group = Table.Group(sort, Table.ColumnNames(Source), {}, 0,
(a,b)=>Number.From(b[Post] <> a[Post] or b[Chng.1] >= a[Chng.2]))
in
group
В противном случае (диапазоны пересекаются) попробуйте этот код:
let
Source = Excel.CurrentWorkbook(){[Name="Table"]}[Content],
cols = {"Post", "Chng.1", "Chng.2"},
sort = Table.Sort(Source, List.Transform(cols, each {_, 0})),
group = Table.Group(sort, cols,
{{"Chng.1_new", each List.Min([Chng.1])},
{"Chng.2_new", each List.Max([Chng.2])}}, 0,
(a,b)=>Number.From(b[Post] <> a[Post] or b[Chng.1] >= a[Chng.2])),
add = Table.AddColumn(group, "Length", each ([Chng.2_new] - [Chng.1_new])*1000), //multiplication by 1000 is optional, depends on your decimal separator
remove = Table.RemoveColumns(add, List.Skip(cols))
in
remove