高级函数

用于获取表数据的一系列高级函数方法。

MAPX

MAPX(operation, map_value, map_field, result_field)

当指定表单的map_field列的值为map_value时,返回result_field的所有值,然后根据指定的聚合操作operation得到对应的返回值。

  • operation: 必需。聚合操作。
  • map_value: 必需。条件字段值。即检索值
  • map_field: 必需。条件字段名。即检索范围
  • result_field:必需。字段返回值。

其中operation参数为字符串,可选值如下:

参数值 含义
first 获取返回值的第一个
last 获取返回值的最后一个
max 最大值
min 最小值
avg 平均值
sum 求和
count 获取返回值的个数

(1)跨表单含义

MAPX函数是一个“跨表单”函数。即其他所有函数都是在当前表单运算的函数,无法调用当前表单或者其他表单中已经提交的数据。MAPX函数可以在一定程度上弥补这样的不足。

跨表有两种情况:

(1)同1张表单,录入时调用之前已经提交的数据。

(2)2张表单。A表录入数据时,调用B表单已经录入的数据。

(2)函数格式

MAPX("聚合操作",检索值,检索范围,返回值)

整个计算过程为:在检索范围中,找到检索值对应的返回值,并对返回值进行聚合操作。

注意检索值来自当前表单中(蓝底),检索范围和返回值来自所有表单字段中的同一表单(绿底)。

(3)应用举例:单条件

有一张选课表,在选择课程时,需要计算出自己是第几个报名的,即计算出某一课程的已报名人数,再+1。

可以看出,此处的检索值为课程,选了哪门课程,就统计这门课程的已报名人数。则公式为:

 MAPX("COUNT",课程,课程,姓名)

对“我是第几个报名的”字段进行编辑函数:

对于这个例子,可解释为:在之前录入的数据里,寻找「课程」字段选择了“健身”的对应的姓名,并用COUNT函数统计一下对应姓名的个数,得到已经报名的人数;最后加1,得到“我是第几个报名的”。

看一下效果:

  • 选择了健身课,就是在之前录入的课程数据里,查找值为“健身”的,并对选择健身的姓名进行计数,发现前面已经有3人报名,自己是第4个报名的。

  • 同理,选择了音乐,就是在之前录入的课程数据里,查找值为“音乐”的,并对选择音乐的姓名进行计数,发现前面已经有1人报名,自己是第2个报名的。

  • 选择了舞蹈,就是在之前录入的课程数据里,查找值为“舞蹈”的,并对选择舞蹈的姓名进行计数,发现前面已经有2人报名,自己是第3个报名的。

点击查看效果「MAPX应用」

(4)应用举例:多条件

很多情况下,要统计的值对应着多个条件,如统计同一班级、同一课程的报名人数,此时的检索值就是班级+课程;再如统计同一店铺、同一销售员的最新一个订单编号,此时的检索值就是店铺名称+销售员名称。

思路:在检索条件不止一个的情况下,就需要先添加一个辅助字段,将多个检索条件合并成一个字段;再把辅助字段作为检索值与检索范围,写到MAPX函数中。

下面通过一个案例来介绍一下设置方法。

「销售上报」表单记录了销售员的每日销售数据,到月底财务需要填写「提成表」计算出某一销售员、某一月份的销售额之和,以便计算出每个人的提成数据。在这种情况下,检索值与检索范围就是销售姓名+月份。

(1)在「销售上报」表单中添加一个辅助字段,并编辑函数,值为「姓名+销售日期对应的年月」。

在录入数据时,辅助字段也会通过公式得到值,以供「提成表」中的MAPX函数调用。

(2)在「提成表」中同样也需要添加这个辅助字段,并编辑函数,值为「姓名+当前统计的月份」。

(3)对销售总额编辑公式,值为MAPX(‘SUM’,辅助字段,辅助字段,销售额)

(4)对提成计算字段编辑公式,销售总额低于1000提成比例为0.1,超过1000提成比例为0.2

(5)看一下效果:

动图中左边为「销售上报」中的已有数据,右边为「提成表」录入数据的界面。

在填写日期时,任意选择统计月份中的任意一天即可,公式会自动提取出年月。

  • 甲在2017年1月的销售总额为6494(3540+2954)

  • 乙在2017年2月的销售总额为49793(8168+41625)

(6)如果辅助字段需要设置为不可见,则一定要在表单属性中修改『不可见字段赋值』属性为「始终重新计算」

UUID

UUID()

随机码生成器。可适用于随机流水号的使用场景等。

但要注意UUID()保证输出的32位字符串不会重复,不能保证从这32位字符串中截取的一部分也不重复,因此有需要不重复的用户,要勾选“不可重复”。

RECNO

RECNO()

累计器,依据当前表单被新打开的次数进行不断累计,起始值为1。

可适用于固定前缀或后缀的累加型流水号的使用场景等。「流水号」

使用举例:

CONCATENATE(‘前缀’,RECNO(),‘后缀’)

Peach是此帮助页面的作者。如果您对此页面的内容有任何意见,请在下方给她反馈。如需获取即时帮助,请联系技术支持。
本文是否对您有帮助?