遇到Excel难以实现的复杂或特殊运算时,可先用剪贴板将数据复制到esProc,利用esProc强大的计算能力完成,再用剪贴板返回Excel。剪贴板方式比传统的add-ins方式部署更简单,操作更顺滑,开发时不影响剪贴板正常使用,且支持多个源片区和结果片区。
基本用法
esProc提供了函数clipboard,可实现剪贴板的基本用法。下面用“各科前3名的学生”为例进行说明。
Excel中处理前的数据如下,其中A列是学生姓名,B-D列分别是数学、英语、物理成绩。
A | B | C | D | |
1 | name | math | english | physics |
2 | lily | 97 | 100 | 99 |
3 | Joshua | 100 | 99 | 100 |
4 | Sarah | 98 | 99 | 96 |
5 | Bertram | 94 | 95 | 85 |
6 | Paula | 91 | 88 | 91 |
7 | Sophia | 92 | 81 | 76 |
8 | Ben | 87 | 80 | 76 |
9 | Ruth | 92 | 91 | 87 |
10 | Pag | 95 | 87 | 87 |
计算目标:求出每学科成绩前3名的学生,并追加到本科目成绩之后。
这个计算目标需要用到记录集合TopN、按序号拼接等功能,Excel本身不好实现,但借助esProc就容易多了。先在Excel中选中源片区(A1:D10),按下ctrl+C,复制到系统剪贴板,打开集算器IDE,编写并执行如下脚本:
A | B | |
---|---|---|
1 | =clipboard().import@t() | /从剪切板读取数据 |
2 | =A1.top(-3;math).(name) | /math前3名 |
3 | =A1.top(-3;english).(name) | |
4 | =A1.top(-3;physics).(name) | |
5 | =join@p(A2;A3;A4).export() | /拼成二维表,转成字串 |
6 | =clipboard(A5) | /向剪切板写数据 |
上面代码中,clipboard函数有两种形态,其中无参数调用该函数时,可返回剪贴中的字符串,如A1格;以变量或格名为参数调用该函数时,可向剪贴板写入字符串,形如A6中的clipboard(var)。
执行上述脚本后,在Excel的B11格用ctrl+V,即可将剪切板中的数据复制到B11-D13,如下:
A | B | C | D | |
… | … | … | … | |
10 | Pag | 95 | 87 | 87 |
11 | Joshua | Lily | Joshua | |