MisShop通过公式,可以便捷地完成各种强大功能。MisShop的公式和Excel类似,简洁直观。在单元格中,以"="开头的是公式。公式类型包括:常量、运算符、单元格引用、数据、函数等。
- 常量公式:例如
=200
、=-2.83
、="abc def"
、="张雨涵"
、=true
、=false
等。 - 运算符公式:例如
=200+3.5
、="这是"+8+"号"
、=3>5
等。 - 单元格引用:例如
=B4+C4
(注意列号字母必须大写) - 数据:例如
=ds.id
、=it.名称
等。 - 函数:例如
=Date.now()
、=Math.pow(10,8)
等。常见的静态函数空间有
Date
:日期函数
Math
:数学函数
Str
:文本函数(字符串函数)
List
:数组函数
Map
:键值对函数
使用函数时,在单元格输入函数空间名,再输入小圆点,平台就以下拉列表的形式显示可选的所有函数,实现纯键盘的快捷录入。同时在小圆点后输入函数的部分字母或拼音首字母,平台会实时筛选出可选函数,鼠标移动到函数名上时会提示函数说明,极大方便函数录入。
单元格中还可以写多条公式。如页面数据定义了sss为数组,其初始化函数为List.parse()。在页面单元格写上
=sss=split(it.专业名称,"(");sss.get(0)
,意思是返回这条记录的专业名称字段的括号前面的字符串。
常用的函数
-
select():我们在新生成的页面常看到单元格内容是
=ds.select(ds.id)
,这个公式意思是本单元格显示ds数据集的id字段,如果这个数据集有多条记录,则在浏览器中,该单元格向下扩展为多个单元格,每个格显示一条记录的id。
当该单元格可以向下扩展时,单元格内会显示一个向下的红色箭头。此时如果右边的单元格如
=ds.名称
格在高级属性里设置了左主格(默认已设置),则这些单元格会跟着=ds.select(ds.id)
格一起向下展开,表现在网页上就是显示很多行记录。如果单独写一个=ds.id
,则只会显示ds记录集里的第一条记录的id字段。
select()可以带过滤条件参数,其作用与sql语言中的select相似,指定显示字段,查询满足条件的记录,显示出来。如
ds.select(`ds.id`,`ds.性别==Dict.性别.男`,["部门","-id"],2,10)
表示查询性别为男的用户的id,先按部门排序,部门相同的按id反向排序,从第3条开始,获取10条数据。
-
find():查询满足条件的数据。常用在变量的初始化函数中,如ds的初始化函数为
table.用户.find(table.用户.性别==Dict.性别.男,["-id"])
。find()函数返回的结果是一个数据集,但直接放在单元格时,不能根据数据集记录条数展开显示,如同=ds.id一样,只会显示第一条。 -
findOne():返回满足条件的一条记录。例如it变量的初始化函数
table.用户.findOne(table.用户.id == @it_id,[])
,返回的是一条记录。 -
dynamic():表示获取某个单元格的动态显示值,如A2单元格的内容设置为
=dynamic(A1)
,则一旦A1的值改变,A2也跟着改变。后期书写形式可以直接写成dynamic.A1 。 -
ifv():根据条件设置值。如B2单元格的内容设置为
=ifv(A2>=100,"BIG","SMALL")
,则当A2的值大于等于100时,B2单元格显示BIG
,否则显示SMALL
。
如在A2单元格的基本属性中 可视 项目右侧的公式栏写上=ifv(A1=="可用",true,false)
,则当A1单元格内容为“可用”时,B2的内容显示,否则不显示。
=ifv(it.性别==null || it.性别=="",@gender,it.性别)
表示如果it的性别字段是空的,那么返回参数gender的值,否则返回性别字段的值。
不同形式开头的函数功能有细微差别,例如求和的函数:
=table.用户.sum(table.用户.id , table.用户.id/2==0)
:对整个数据表的偶数id求和。
=ds.sum(ds.id , ds.id/2==1)
:分页的求和,只对当前页面显示记录的id求和,虽然ds的定义也是从table中得来。
对于返回记录或数据集类型的函数,其后加上小圆点后可以下拉显示候选值。如
=table.用户.findOne(table.用户.id==12).性别
,表示id为12的用户的性别。但函数返回值下拉的字段还是一个引用的话,不能连续下拉多次。
网友评论