取分组达成累加目标值时间的前 N 组
例题描述
有人员业绩表文件book1.xlsx中有下图所示的数据:
现在要按业绩达成50000的达成时间排序,找出入围时间最早的前10名人员,如下图所示:
此题涉及数据分组、组内迭代累加、取排序后的前N名等知识。
实现步骤
1、 编写脚本:
A |
|
1 |
=file("E:/top10/book1.xlsx").xlsimport@t(;"金额明细") |
2 |
=A1.group(姓名;~.select@1( 业绩 [:0].sum()>=50000). 达成时间: 入围时间 ) |
3 |
=A2.top(10; 入围时间) |
4 |
=file("E:/top10/book1.xlsx").xlsexport@ta(A3;"入围名单") |
A1 读取book1.xlsx文件中的数据
A2 按姓名分组,在组内选出业绩累加值达到 50000 的第 1 条记录,取它的达成时间重新命名为入围时间。业绩 [:0] 表示从第 1 条到当前记录中的业绩字段值组成的序列。
A3 找出入围时间排在前10名的记录
A4 把A3导出到book1.xlsx中的入围名单Sheet,选项@t表示首行输出列标题,a表示追加导出Sheet
2、 运行程序,结束后再打开book1.xlsx就可以看到入围名单Sheet中的数据。
问答搜集 http://club.excelhome.net/thread-1570037-1-1.html
【附件】 top10.zip