集算器支持Excel add-in接口,既可以在单元格调用集算器表达式,也可以在单元格或VBA中调用集算器脚本文件。
一、环境配置
应在windows操作系统下配置JDK、集算器、Excel,对于最常见的64位windows,三个软件的位数必须保持一致,即都是32位,或都是64位。
JDK
集算器自带JDK,如果本机原先没有JDK,则建议跳过本步骤,在下一步安装。如果本机的JDK可卸载,建议用JAVA或Windows官方提供的工具正常卸载,再进入下一步。
如果本机已安装JDK(1.8或以上版本),且有重要用途不宜卸载,则应确保注册表信息正确,其中64位JDK的位置在:
\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\javasoft\Java\Runtime Enviroment |
集算器
正常安装集算器,可以选装自带的JDK,也可以指向本机已安装的JDK。
Excel
在Excel中打开对话框:file->Option->add-ins
在对话框中点击Go…按钮,导航到集算器add-in:[esProc的安装目录]\bin\ExcelRaq.xll。
重启Excel,使配置生效。
二、基本用法
通过名为esproc的函数,可以在Excel单元格中调用集算器表达式。比如A列是逗号分隔的数字,B列是单个数字:
A | B | |
1 | 1,2,3,4,5,6 | 3 |
2 | 7,45,31,12,-10 | 4 |
3 | 9,7,5,3,2 | 5 |
现在要在C列的每行计算出:A列中比B列大的那些数中,最小的是哪个数,结果应当如下:
A | B | C | |
1 | 1,2,3,4,5,6 | 3 | 4 |
2 | 7,45,31,12,-10 | 4 | 7 |
3 | 9,7,5,3,2 | 5 | 7 |
要计算本题,应当先在C1编写表达式:
=esproc("=?.split@cp().sort().select@1(~>?)",A1,B1)
回车后,将C1格下拉或复制到C3,即可完成计算。
表达式中的函数split将字符串按分隔符拆分成数组(序列),@c表示按逗号拆分,@p表示自动转换类型。函数sort实现排序,select实现条件查询,@1表示返回第1个。
参数可以是多个。表达式中的问号是参数占位符,有几个参数就有几个问号,这是集算器表达式的特色。
参数的格式遵循Excel规范。可以是B1这种复制时自动变更坐标的参数,或$B$1这种固定坐标的参数,以及跨sheet、跨文件的参数。集算器也支持片区参数,比如A1:D5,亦可通过鼠标选择生成片区参数。
三、以片区为参数
片区参数在格式上遵循Excel规范,本质上是集算器的序列数据类型。比如下面的字母数字表中,奇数行是唯一字母,偶数行是数字:
A | B |