如何获取每个分类下最大值所在行的数据
例题描述和简单分析
有 Excel 文件 book1.xlsx,数据如下所示:
现在需要从“原数据”页获取每日各列的最值所在群代号,填入“数据对比”页,结果如下:
解法及简要说明
在集算器中编写脚本 p1.dfx,如下所示:
A |
|
1 |
日期 入群数 退群数… |
2 |
=A1.import@t() |
3 |
=A2.group(日期 ) |
4 |
入群数 max 入群数 min 退群数 max… |
5 |
=A4.split("\t").("~."/right(~,3)/"p("/left(~,-3)/").群代号:"/~).concat@c() |
6 |
=A3.new(~.日期: 日期,${A5}) |
简要说明:
A1 从 excel 中复制“原数据”页的数据
A2 将 A1 读成序表
A3 按日期分组
A4 结果数据除第一列日期外的列名(较多,有规律,拼计算表达式用)
A5 将 A4 的串按制表符拆成序列,对每个列名,拼出相应的计算表达式,再将序列用逗号拼成串: ~.maxp(入群数 ). 群代号: 入群数 max,~.minp( 入群数). 群代号: 入群数 min,…,~.maxp(发言率). 群代号: 发言率 max,~.minp(发言率). 群代号: 发言率 min
A6 计算结果(用宏,替换为 A5 中拼接好的串)
执行程序后,在集算器中选中 A6 单元格,再点击右侧对应的“copy data”按钮。在 Excel 的“数据对比”页中,点击 B4 单元格,按 Ctrl+V 就可以把计算结果粘贴过来。
http://club.excelhome.net/thread-1570029-1-1.html