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函数还内置一些预设函数,预设函数列表为:

  • 类别预设函数:
  1. 列表预设函数
    1. array函数,将列表转化为数组
    2. pop函数,删除列表最后一个元素
    3. remove函数,删除列表指定位置元素
    4. add函数,向列表添加元素函数
    5. Count函数,获取列表元素数量
    6. clear函数,清空列表元素
    7. Insert函数,在列表指定位置插入数据
    8. Index函数,返回列表内第一个元素的位置
    9. Contains函数,判断列表内是否存在某个元素,如果存在返回true
  2. 数组函数
    1. toList函数,将二维数组转化为列表,默认按行转化,例如选区数组为5行4列,则列表长度为5,列表每个元素为一行数组。
  3. 内置函数
    1. range函数,返回整数列表,例如range(1,3)返回列表[1,2]
    2. gettype函数,判断数据类型,如果对于某个变量数据类型不确定,可以使用该函数判定
    3. flatten,将二维数组展平成一维数组。该函数默认按行展开
  4. 数组函数
    1. 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(); # 将结果转化为数组

相关新闻

QQ
QQ
关注微信
关注微信
返回顶部