遇到 Excel 难以实现的简单或非凡运算时,可先用剪贴板将数据复制到 esProc,利用 esProc 弱小的计算能力实现,这种形式比 add-ins 有更多长处,具体场景和代码解析请点击esProc 利用剪贴板强化 Excel 计算

遇到Excel难以实现的简单或非凡运算时,可先用剪贴板将数据复制到esProc,利用esProc弱小的计算能力实现,再用剪贴板返回Excel。剪贴板形式比传统的add-ins形式部署更简略,操作更顺滑,开发时不影响剪贴板失常应用,且反对多个源片区和后果片区。

根本用法

esProc提供了函数clipboard,可实现剪贴板的根本用法。上面用“各科前3名的学生”为例进行阐明。

Excel中解决前的数据如下,其中A列是学生姓名,B-D列别离是数学、英语、物理问题。

计算指标:求出每学科问题前3名的学生,并追加到本科目问题之后。

这个计算指标须要用到记录汇合TopN、按序号拼接等性能,Excel自身不好实现,但借助esProc就容易多了。先在Excel中选中源片区(A1:D10),按下ctrl+C,复制到零碎剪贴板,关上集算器IDE,编写并执行如下脚本:

下面代码中,clipboard函数有两种状态,其中无参数调用该函数时,可返回剪贴中的字符串,如A1格;以变量或格名为参数调用该函数时,可向剪贴板写入字符串,形如A6中的clipboard(var)。

执行上述脚本后,在Excel的B11格用ctrl+V,即可将剪切板中的数据复制到B11-D13,如下:

随便编辑脚本

然而,咱们在编辑调试脚本时,保不齐会用一下复制粘贴,这时候就把剪贴板的内容冲掉了,再执行clipboard()时, 返回的内容就是方才编辑的代码,这样就无奈实现计算了,只能再回到Excel去从新复制,有点麻烦。

针对这个问题,esProc提供了clipboard@e()函数,选项@e示意始终返回第一次从Excel复制到剪贴板中的数据。上面让咱们试一下。

在“各科前3名的学生”这个例子中,假如咱们曾经从Excel复制了数据,并写完了脚本。此时编辑脚本,将A3、A4挪动到B2、B3,再执行脚本时,就会因为A1中的clipbaord()取到谬误数据,而导致A2报错。当初批改代码,在A1应用方才提到的clipboard@e(),则挪动代码后可正确执行。编辑后的代码如下:

多个后果片区

clipboard(…)只能返回一个后果,但有些较简单的运算可能须要返回多个后果,这该怎么办呢?

其实 ,在esProc的结果显示区能够间接把多个格值(或变量值)别离复制到剪贴板,并顺次返回Excel。

上面用 “各科前3名和每个人的超过指标”为例进行阐明。

计算指标:在学生成绩单的根底上,不仅在各科目上面追加本科目前3名的学生,而且须要新加一列target,计算出比自己总分略高的3名学生的名单列表,作为自己该当超过的指标。留神,有些人的超过指标有余3人,每个超过指标之间须用>号连贯。

先在Excel中选中源片区(A1:D10),按下ctrl+C,复制到零碎剪贴板,关上esProc IDE,编写并执行如下脚本:

上述代码中,A3存储后果片区1,即本科目前3名的学生;A4存储后果片区2,即每个人的超过指标。另外该当留神到,代码中毋庸export()和clipboard(…)。

上面将计算结果返回Excel。先点击片区1,再点击右侧对应的“copy data”按钮,如下图:

在Excel 的B11 格用ctrl+V ,即可将片区1 复制到B11-D13 ,如下:

再点击脚本中的片区2,按住shift的同时,点击右侧对应的“copy data”按钮,之后在Excel的的E1格按下ctrl+V,即可将片区2连带列名复制到E1:E10。如下所示:

在上述操作中,咱们可通过shift管制计算结果是否带列名,这是esProc的独有形式,其余计算工具不具备此项性能。

多个源片区

解决了多指标的问题后,咱们很容易联想到有多个源的问题。计算可能须要应用Excel的多个源片区,但clipboard只能放弃最新复制的那一片,这又该怎么办?

有方法,能够把剪贴板内容间接简单到格子外面去。

上面用 “查问合乎指定条件的订单”为例进行阐明。

Excel中有两个sheet,订单明细和员工名单,其中订单明细如下:

员工名单如下:

计算指标:查问出最近days天内或订单属于部门列表depts的数据,须要的列有订单编号、日期、金额、销售员名字、部门名称。其中days是内部参数,每次执行时都能够输出不同的值,比方输出30示意查问30天内的订单;depts也是内部参数,比方["Markeding","Finance"]。这个计算指标波及动静查问和多键值查问,Excel自身不好实现,但借助esProc就容易多了。

首先,在Excel中选定片区“订单明细”,连带列名一起复制粘贴到esProc脚本的A1单元格;同样地,将片区“员工名单”复制到esProc脚本的A1单元格。如下图:

留神,肯定要进入A1格的编辑状态能力进行复制,不然会把剪贴板的内容填进一大片格子,后果可能变成这样:

这就不好了,占有区域太大,会影响代码布局。

如果操作正确,A1/A2分外观上只出现很小一部分数据,点击后才会出现残缺数据,这是网格局代码的独特之处,适宜在不影响浏览和代码布局的状况下复制大片数据。

复制完两个源片区后,持续编写脚本,期间可屡次运行脚本,可手工操作剪贴板。最初代码如下:

实现计算后,可用“copy data”按钮将A5中的计算结果拷贝回Excel。有一点须要留神,保留代码时该当把A1/A2格的数据革除掉,否则这些大片数据也会被一起保存起来了。