ETScript脚本函数为EFunction插件函数,该函数利用脚本语言,实现复杂数据处理。
ETScript脚本函数支持数据类型
- 数值:该类型数据对应Excel数值型类型数据;
- 文本:该类型数据对应Excel文本类型数据;
- 布尔:该类型对应Excel布尔类型数据,true对应Excel TRUE类型,false对应Excel FALSE类型;
- 列表:列表类型,该类型数据对应编程语言列表类型,可以向列表内添加数据,删除数据,列表内数据数量可变动;
- 数组:该类型对应Excel选区或者数组数据,可以是Excel选区或者其他函数返回结果数组,数组数据为二维数组,二维数组数据不可变动,但数组元素内容可以更改。
ETScript脚本函数支持运算符
ETScript函数支持运算符基本和Excel公式运算符重合。运算符分别为:
- 加号运算符:“+”
- 减号运算符:“-”
- 乘法运算符:“*”
- 除法运算符:“/”
- 幂运算符:“^”
- 拼接运算符:“&”
- 大于:“>”
- 大于等于:“>=”
- 小于:“<”
- 小于等于:“<=”
- 等于:“==”
- 不等于:“<>”
ETScript函数变量
可以利用变量实现数据缓存和重复利用。例如案例:=ETScript(“x”,B4:F11,H4)。
该函数实现将选区B4:F11内数据内容,存入变量x,将选区数据载入变量后,就可以在脚本内,进行数据处理了。例如如下脚本案例
a=x.toList();
# 变量x代表的是选区数组,因为变量x代表数组,这里使用toList()函数转化为列表,并赋值为变量a,
aa=[];
# 定义一个空列表,赋值为变量aa
for alist in a{
d=alist.array();
c=MEDIAN(d);
aa.add(c);
}
aa.array();
ETScript函数变量为弱数据类型,也就是说变量可以赋值给任何数据类型。例如变量x最终为布尔类型,函数返回了结果为TRUE。
x=1;
# 将数值赋值为变量x
x="a";
# 将文本a赋值为变量x
x=true; # 将布尔型赋值给变量x。最终函数返回true。
ETScript函数支持For循环语句
脚本函数For循环,可以对列表和数组类型进行遍历。语法样例为 for a in list{}
a=x.toList();
aa=[];
for alist in a{
# 变量a为列表,for遍历列表内每个数据,并临时将数据存入alist变量,在{}里面,可以操作变量alist
d=alist.array();
c=MEDIAN(d);
aa.add(c);
}
aa.array();
上述代码的功能为,将二维数组转化为列表,列表每个元素数据为一行数据,通过for循环遍历列表。在语句块内,统计出来每行数据中位值,并将中位值存入列表aa内,数据完成遍历后,将结果列表aa转化为数组,并显示出来。
ETScript函数支持while循环语句
for循环主要针对列表和数组数据,这些数据均为有限数据,就是列表和数组维度是已知道的,如果变量的次数不可知,可以使用while循环,例如下面案例,通过循环变量x每次增加1,直到x不再小于10。所以最终脚本函数返回结果值10。
x=1;
while(x<10)
{ x = x+1;}
x;
这里需要注意for循环和while循环支持continue和break语法。continue和break语法意义,和大多数语言一样。break退出所有循环,continue语句退出本次循环继续下一步循环。
x=1;
while(true)
{ x = x+1;
if(x>10){
break;
# 表示如果x值大于10,则退出while循环
}
}
x;
ETScript函数IF语句
if语句为条件判断语句。例如下方案例,将偶数存入列表y内,将奇数存入变量z内。
y=[];
z=[];
for a in x
{
if(mod(a,2)==0)
# 偶数存入列表y
{
y.add(a);
}else{z.add(a);}
# 奇数存入列表z
}
z;
ETScript函数支持函数调用
上面案例引用到了Excel内置函数mod函数,就是说ETScript函数,几乎可以引用Excel所有内置函数。
ETScript函数函数除了能够引用Excel函数外,也可以引用EFunction一百多个自定义函数。
同时对于ETScript函数还内置一些预设函数,预设函数列表为:
- 类别预设函数:
- 列表预设函数
- array函数,将列表转化为数组
- pop函数,删除列表最后一个元素
- remove函数,删除列表指定位置元素
- add函数,向列表添加元素函数
- Count函数,获取列表元素数量
- clear函数,清空列表元素
- Insert函数,在列表指定位置插入数据
- Index函数,返回列表内第一个元素的位置
- Contains函数,判断列表内是否存在某个元素,如果存在返回true
- 数组函数
- toList函数,将二维数组转化为列表,默认按行转化,例如选区数组为5行4列,则列表长度为5,列表每个元素为一行数组。
- 内置函数
- range函数,返回整数列表,例如range(1,3)返回列表[1,2]
- gettype函数,判断数据类型,如果对于某个变量数据类型不确定,可以使用该函数判定
- flatten,将二维数组展平成一维数组。该函数默认按行展开
- 数组函数
- toList()列表函数,将数组转化为列数据,列表元素为每行数据(本质上每行数据也为数组数据)
以下为EFunction脚本案例
以下案例为将选区数据存入变量x,通过for循环遍历每行数据,统计每行数据中位值,并返回结果数组。
a=x.toList(); # 将数组x变为列表,并存入变量a
aa=[]; # 定义一个空列表,用于存放结果中位值
for alist in a{
d=alist.array(); # 将每行数据转化为数组,因为Excel内置函数只能够统计数组类型数据
c=MEDIAN(d); # 调用Excel内置median函数,统计中位值,并将结果赋给变量c
aa.add(c); # 将c代表的结果值,存入列表
}
aa.array(); # 将结果转化为数组