月份 条件1 条件2 累计值 当月值
2017/1/1 A 甲 10 10
2017/2/1 A 甲 7 -3
2017/3/1 A 甲 43 36
2017/1/1 B 甲 5 5
2017/2/1 B 甲 23 18
2017/3/1 B 甲 44 21
2017/1/1 A 乙 9 9
2017/2/1 A 乙 22 13
2017/3/1 A 乙 41 19
2017/1/1 B 乙 8 8
2017/2/1 B 乙 23 15
2017/3/1 B 乙 47 24
累计值求当月值
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
类型 = Table.Buffer(Table.TransformColumnTypes(源,{{"月份", type date}, {"条件1", type text}, {"条件2", type text}, {"累计值", Int64.Type}})),
排序 = Table.Sort(类型,{{"条件1", Order.Ascending}, {"条件2", Order.Ascending}, {"月份", Order.Ascending}}),
索引0 = Table.AddIndexColumn(排序, "索引_0", 0, 1),
索引1 = Table.AddIndexColumn(排序, "索引_1", 1, 1),
分组初始值 = Table.Group(排序, {"条件1", "条件2"}, {{"初始值", each List.FirstN([累计值],1){0},Int64.Type}}),
合并初始值 = Table.NestedJoin(索引0, {"条件1", "条件2"}, 分组初始值, {"条件1", "条件2"}, "分组初始值", JoinKind.LeftOuter),
展开初始值 = Table.ExpandTableColumn(合并初始值,"分组初始值",{"初始值"}),
合并索引1 = Table.NestedJoin(展开初始值, {"索引_0"}, 索引1, {"索引_1"}, "索引_1", JoinKind.LeftOuter),
展开索引1 = Table.ExpandTableColumn(合并索引1, "索引_1", {"累计值"}, {"累计值1"}),
当前值 = Table.AddColumn(展开索引1, "计算当前值", each if [累计值]=[初始值] then [累计值] else [累计值]-[累计值1],Int64.Type),
结果 = Table.SelectColumns(当前值,{"月份", "条件1", "条件2", "累计值", "计算当前值"})
in
结果
let
源 = Excel.CurrentWorkbook(){[Name="表4"]}[Content],
更改的类型 = Table.TransformColumnTypes(源,{{"年月", type date},{"本年同期累计", type number}}),
分组的行 = Table.Group(更改的类型, {"年月", "公司", "险类3", "项目"}, {{"本年同期累计", each List.Sum([本年同期累计]), type number}}),
排序 = Table.Sort(分组的行,{{"公司", Order.Ascending}, {"险类3", Order.Ascending}, {"项目", Order.Ascending}, {"年月", Order.Ascending}}),
索引0 = Table.AddIndexColumn(排序, "索引_0", 0, 1),
索引1 = Table.AddIndexColumn(排序, "索引_1", 1, 1),
分组初始值 = Table.Group(排序, {"公司", "险类3","项目"}, {{"初始值", each List.FirstN([本年同期累计],1){0},Int64.Type}}),
合并的查询 = Table.NestedJoin(索引0,{"公司", "险类3", "项目"},分组初始值,{"公司", "险类3", "项目"},"分组初始值",JoinKind.LeftOuter),
展开初始值 = Table.ExpandTableColumn(合并的查询, "分组初始值", {"初始值"}, {"初始值"}),
合并索引1 = Table.NestedJoin(展开初始值,{"索引_0"},索引1,{"索引_1"},"索引_1",JoinKind.LeftOuter),
展开索引1 = try Table.ExpandTableColumn(合并索引1, "索引_1", {"本年同期累计"}, {"本年同期累计.1"}) otherwise null,
排序的行 = Table.Sort(展开索引1,{{"公司", Order.Ascending}, {"险类3", Order.Ascending}, {"项目", Order.Ascending}, {"年月", Order.Ascending}}),
已添加自定义 = Table.AddColumn(排序的行, "计算当前值", each if [本年同期累计]=[初始值] then [本年同期累计] else [本年同期累计]-[本年同期累计.1],type number)
in
已添加自定义
对于只有第一个月有数据,后面2个月没数据的,Table.AddColumn(排序的行, "计算当前值", each if [本年同期累计]=[初始值] then [本年同期累计] else [本年同期累计]-[本年同期累计.1],type number) 这一步要怎么改?