例题描述和简单分析 有 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 就可以把计算结果粘贴过来。
|