MAPX
MAPX 函数是一个“跨表单”函数。有且仅有“跨表单”函数可调用当前表单中已经提交的或其他表单中数据。
函数用法:
MAPX(operation, current_value, other_field, result_field)
其中各参数的含义如下:
- operation: 聚合操作,必填;
- current_value: 条件字段值,即检索值,必填;
- other_field: 条件字段名,即检索范围,必填;
- result_field:字段返回值,必填;
当指定表单的 other_field 列的值为 current_value 时,返回 result_field 的所有值,然后根据指定的聚合操作 operation 得到对应的返回值。
可以理解为:
在检索范围中,找到检索值对应的返回值,并对返回值进行聚合操作。
MAPX("聚合操作",检索值,检索范围,返回值)
注意检索值来自当前表单中(蓝底),检索范围和返回值来自所有表单字段中的同一表单(灰底)。

参数限制:
1)聚合操作(operation)
operation 参数(聚合操作)为字符串,可选值如下::
| 参数值 | 含义 |
|---|---|
| first | 获取返回值的第一个 |
| last | 获取返回值的最后一个 |
| max | 最大值 |
| min | 最小值 |
| avg | 平均值 |
| sum | 求和 |
| count | 获取返回值的个数 |
2)检索值(current_value)、检索范围(other_field)
支持设置检索值的字段,及其对应支持的检索范围字段如下表所示:
| 检索值 | 检索范围 |
|---|---|
| 单行文本 | 单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框、流水号 |
| 数字 | 数字 |
| 多行文本 | 单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框、流水号 |
| 日期时间 | 日期时间、提交时间、更新时间 |
| 单选按钮组 | 单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框、流水号 |
| 复选框组 | 复选框组、下拉复选框(全等) |
| 下拉框 | 单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框 |
| 下拉复选框 | 复选框组、下拉复选框(全等) |
| 关联表单 | 与关联字段类型为准 |
3)返回值(result_field)
以 A 表设置 MAPX 公式,跨表取 B 表数据:MAPX(“聚合操作”,字段1,字段2,“返回值”)为例,根据不同的聚合操作,支持设置返回值的字段如下:
| 聚合操作 | 支持的返回值字段 | 返回值计算方法 |
|---|---|---|
| first | 单行文本、多行文本、数字、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、流水号、创建时间、修改时间 | 取字段 1=字段 2时,B 表中第一条入库的数据对应的返回字段值 |
| last | 单行文本、多行文本、数字、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、流水号、创建时间、修改时间 | 取字段 1=字段 2时,B 表中最后入库的数据对应的返回字段值 |
| max | 数字 | 取字段 1=字段 2时,B 表所有数据数字字段的最大值 |
| 单行文本、多行文本、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、流水号、创建时间、修改时间 | 取字段 1=字段 2时,B 表所有数据按字符串比较,返回对应字符串最大值 | |
| min | 数字 | 取字段 1=字段 2时,B 表所有数据数字字段的最小值 |
| 单行文本、多行文本、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、流水号、创建时间、修改时间、扩展字段 | 取字段 1=字段 2时,B 表所有数据按字符串比较,返回对应字符串最小值 | |
| avg | 数字 | 取字段 1=字段 2时,B 表所有数据数字字段的平均值 |
| sum | 数字 | 取字段 1=字段 2时,B 表所有数据数字字段的求和 |
| count | 单行文本、多行文本、数字、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、流水号、创建人、创建时间、修改时间 | 取字段 1=字段 2时,B 表录入了多少条匹配的数据 |
注:1)检索范围和返回值中的字段不能选择子表单字段;
函数示例:
跨表有两种情况:
1)同 1 张表单,录入数据时调用之前已经提交的数据;
2)2 张表单,A 表录入数据时,调用 B 表已经录入的数据。
应用举例:
有一张选课表,在选择选修课程时,需要计算出自己是第几个报名的,即计算出某一课程的已报名人数,再+1。
可以看出,此处的检索值为课程,选了哪门课程,就统计这门课程的已报名人数。则公式为:
MAPX("COUNT",课程,课程,姓名)
对“我是第几个报名的”字段进行编辑函数:
MAPX("COUNT",课程,课程,姓名)+1

对于这个例子,可理解为:在之前录入的数据里,寻找「课程」字段选择了“游泳”的对应的姓名,并用COUNT 函数统计对应姓名的个数,得到已经报名的人数;最后加 1,得到“我是第几个报名的”。点击体验效果
看一下效果:
- 选择了游泳,就是在之前录入的课程数据里,查找值为“游泳”的,并对选择游泳的姓名进行计数,发现前面已经有 3 人报名,自己是第 4 个报名的。
- 同理,选择了太极,就是在之前录入的课程数据里,查找值为“太极”的,并对选择太极的姓名进行计数,发现前面已经有 1 人报名,自己是第 2 个报名的。
- 选择了足球,就是在之前录入的课程数据里,查找值为“足球”的,并对选择足球的姓名进行计数,发现前面已经有 2 人报名,自己是第 3 个报名的。


注:1)当设置字段公式为 MAPX("COUNT",课程,课程,姓名) 时,如返回值为 0,则字段会显示为空值。