- let
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
区分出入库数 = Table.ReplaceValue(源,each [出入库],each -[数量],(v,o,n)=>if o="出库" then n else v,{"数量"}),
及时库存 = Table.AddColumn(区分出入库数,"库存",each List.Sum(Table.SelectRows(区分出入库数,(x)=>x[商品]=[商品] and x[时间]Number.From(y=0)),each [库存]=0)[B],
(x)=>Table.FirstN(x,2)))&
Table.LastN(_,1))[时间],
{{},{}},(s,c)=>if List.Count(s{0})=List.Count(s{1}) then {s{0}&{c},s{1}} else {s{0},s{1}&{c}}),
{"开始时间","结束时间"})
}
),
展开 = Table.ExpandTableColumn(分组选取开始结束时间, "A", {"开始时间", "结束时间"}, {"开始时间", "结束时间"}),
计算期间最大库存 = Table.AddColumn(展开,"最大库存",each List.Max(Table.SelectRows(及时库存,(x)=>x[商品]=[商品] and x[时间]>=[开始时间] and x[时间]<=[结束时间])[库存])),
排序的行 = Table.Sort(计算期间最大库存,{{"开始时间", Order.Ascending}})
in
排序的行
复制代码
用M好像也不那么容易,不过总体感觉比DAX要容易得到一些,不那么烧脑,可能大神们会有更优化的解。
结果
|