let
fr = Excel.CurrentWorkbook(){[Name="Исходник"]}[Content],
f = (x)=> [ z1 = x{0}+#duration(0,0,0,x{1}),
z2 = DateTime.From(DateTime.ToText(x{0}, "dd.MM.yyyy HH:00"), "ru-RU"),
z3 = List.Generate(()=> [i=1, q1 = z2, q2 = if (z1>z2+#duration(0,1,0,0)) then Duration.TotalSeconds((z2+#duration(0,1,0,0)-x{0})) else Duration.TotalSeconds(z1-x{0})],
(x)=>x[q1]<z1,
(x)=>[i=x[i]+1, q1 = x[q1]+#duration(0,1,0,0), q2 = if z1>(q1+#duration(0,1,0,0)) then 3600 else Duration.TotalSeconds(z1-q1)],
(x)=>[DT = x[q1], DU = x[q2]]),
z4 = Table.FromRecords(z3)][z4],
a1 = Table.CombineColumns(fr, {"DateTimeStart", "Duration"}, f, "new"),
a2 = Table.ExpandTableColumn(a1, "new", Table.ColumnNames(a1[new]{0})),
a3 = Table.Group (a2, {"Condition", "DT"}, {"DU", (x)=>List.Sum(x[DU])})
in
a3 |