参考
let
源 = Excel.CurrentWorkbook(){[Name="demo"]}[Content],
类型 = Table.TransformColumnTypes(源,{{"销售经理", type text}, {"销售日期", type date}, {"销售金额", Int64.Type}}),
by = Table.AddColumn(类型, "by", each Number.From([销售日期]),Int64.Type),
解 = Table.Group(by
, {"销售经理"}
, {
"达标日期"
, (T)=>
let
R=Table.SelectRows(
Table.AddColumn(T
,"LJ"
,each List.Sum(List.FirstN(T[销售金额],[by]-List.Min(T[by])+1) ) )
,each [LJ]>=10)
in
Table.SelectRows(R,each [LJ]=List.Min(R[LJ]))[销售日期]{0}?
,type date
}
),
筛选 = Table.SelectRows(解, each ([达标日期] <> null))
in
筛选
参考
let
源 = Excel.CurrentWorkbook(){[Name="demo"]}[Content],
类型 = Table.TransformColumnTypes(源,{{"销售经理", type text}, {"销售日期", type date}, {"销售金额", Int64.Type}}),
by = Table.AddColumn(类型, "by", each Number.From([销售日期]),Int64.Type),
解 = Table.Group(by
, {"销售经理"}
, {
"达标日期"
, (T)=>
let
R=Table.SelectRows(
Table.AddColumn(T
,"LJ"
,each List.Sum(List.FirstN(T[销售金额],[by]-List.Min(T[by])+1) ) )
,each [LJ]>=10)
in
Table.SelectRows(R,each [LJ]=List.Min(R[LJ]))[销售日期]{0}?
,type date
}
),
筛选 = Table.SelectRows(解, each ([达标日期] <> null))
in
筛选
fyi
= let fx=(x,y,z)=>if List.Sum(y)<10 then [] else
if List.Sum(List.FirstN(y,z))>=10 then x{z-1}
else @fx(x,y,z+1)
in Table.Group(源,"销售经理",{"达标日期",each fx(_,[销售金额],1)[销售日期]?},1)
谢谢两位老师的帮忙,感谢!
@焦棚子 老师您好,我发现您的代码,如果同一天一个销售经理有多条记录,会取不到当天为达标日期
譬如,A 在1月2号有多条记录,之和大于10
销售经理 销售日期 销售金额
A 2019/1/2 3
B 2019/1/3 5
C 2019/1/4 6
D 2019/1/5 7
A 2019/1/3 9
B 2019/1/4 3
D 2019/1/6 4
C 2019/1/9 2
A 2019/1/9 4
D 2019/1/10 3
B 2019/1/2 4
E 2019/1/6 11
T 2019/1/1 10
K 2019/1/7 9
K 2019/1/15 1
A 2019/1/2 8
@焦棚子 其实我再group by日期 sum一下也可以解决此问题...
let
源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
自定义1 = Table.Group(源,"销售经理",{">10的日期",each
try Table.SelectRows(
Table.Buffer(
Table.Sort(
let a=Table.AddIndexColumn(_,"索引",0) in
Table.AddColumn(a,"L",each
List.Sum(
Table.SelectRows(a,(t)=> t[索引]<=[索引])[金额])
),
{{"销售日期",0}})),
each [L]>=10){0}[销售日期] otherwise "无"
}),
筛选的行 = Table.SelectRows(自定义1, each [#">10的日期"] <> "无"),
更改的类型 = Table.TransformColumnTypes(筛选的行,{{">10的日期", type date}})
in
更改的类型
@Nikolas 如果用power pivot 可以怎样实现吗? 我用pp发现达标时间作为度量值并不能按达标时间来排序,谢谢!
如果是写了Sort
类函数的时候最好在函数的前面再上Buffer
函数,这样速度稍微就可以快些~