例题描述和简单分析
将下面 A 列数据拆分成右边的形式,有 @符号的要加到一起。相关的数据如下:

需要统计出孔 (即 @的数据)、夹及其它的数据。
解法及简要说明
1. 在集算器中设置 demo.dfx 脚本参数:

设置参数 arg1 为 Excel中 A列数据。
2. 编写脚本 demo.dfx:
| A | B | |
| 1 | =(arg1).(~.split(",").(~.split("="))) | / 将数据按行拆分成键值结构 |
| 2 | >A1.run(r=[0,0,0], ~.(if(left(~(1), 1)=="@", r(1)+=int(~(2)), if(left(~(1), 1)=="夹", r(2)+=int(~(2)), if(left(~(1), 1)=="其", r(3)+=int(~(2)) )))), ~=r) | / 按每行的键分类进行值的累计求和存入序列 r |
| 3 | return create(孔, 夹, 其它).record(A1.conj()) | / 将计算结果存入新序表返回 |
3. 设置参数后,调试运行一下,可看到 A1 格值:
| A1 | Member |
| [[@10,5],[夹,2],[其它,2]] | |
| [[@10,4],[开槽,1],[其它,2]] | |
| [[@10,3],[夹,2],[开槽,2]] | |
| [[@10,2],[@13,3],[夹,2],[其它,2]] | |
| [[@10,1],[@14,2],[开槽,1],[其它,2]] | |
| [[@10,6],[@14,3],[夹,2],[开槽,2]] |
执行到 A2 时,A1 格值:
| A1 | Member |
| [5,2,2] | |
| [4,0,2] | |
| [3,2,0] | |
| [5,2,2] | |
| [3,0,2] | |
| [9,2,0] |
4. 执行脚本返回结果:
| A3 | 孔 | 夹 | 其它 |
| 5 | 2 | 2 | |
| 4 | 0 | 2 | |
| 3 | 2 | 0 | |
| 5 | 2 | 2 | |
| 3 | 0 | 2 | |
| 9 | 2 | 0 |
A2: 对于每行数据来说,r 为存储的记录数据,将相同键的数值进行累计求和,存入序列 r 中; 遍历所有行,计算出各个物件的数量。
5 、调用 demo.dfx 脚本:
Excel 中选择网格 B1:D7,输入公式: =esproc("demo", A2:A7),同时按 ctrl+shift+enter 执行公式,填充结果如下:

博客围绕将 A 列数据拆分,对有 @符号的数据相加,统计孔、夹及其他数据展开。介绍了在集算器中设置 demo.dfx 脚本参数,编写脚本,调试运行,执行脚本返回结果,最后在 Excel 中调用脚本填充结果的具体操作。
686

被折叠的 条评论
为什么被折叠?



