「「云之家」」计算公式之 MAP 函数
MAP 函数是做什么的?
MAP是用来筛选符合条件的数据的,一般是用来筛选明细中的数据
用法
MAP(遍历的数据, 筛选条件, 索引)
说明
遍历的数据:必传的参数,要遍历的数据
筛选条件:必传的参数,如何筛选数据,其实就是这个条件返回真,这条数据就匹配了这个条件,筛选后的数据就会包含这条数据
索引:非必传参数,索引从 1 开始
示例
- 假设我们有个【转正评分明细】,数据如下
| 评价人姓名 | 评价得分 |
|---|---|
| 孙悟空 | 11 |
| 猪八戒 | 5 |
| 沙僧 | 4 |
- 2 用
MAP函数筛选出所有评价得分 > 10 的记录
MAP(转正评分明细.控件自身,转正评分明细.评价得分 > 10)
筛选结果:(只有一条记录符合条件)
| 评价人姓名 | 评价得分 |
|---|---|
| 孙悟空 | 11 |
场景 1
假如,有个【转正评分】模板,评价得分最高为 10 分,那么如果【转正评分明细】中出现 评价得分 > 10,自然就是异常情况,这个时候我们就要限制,如果【转正评分明细】中出现 评价得分 > 10 的记录,就不允许提交,就可以再【提交校验】中设置如下
// COUNT 函数是判断数量的
COUNT(MAP(转正评分明细.控件自身, 转正评分明细.评价得分 > 10)) > 0
// 或者
IF(COUNT(MAP(转正评分明细.控件自身,转正评分明细.评价得分 > 10)) > 0, true, false)
进阶用法
等等,你好像没说【索引】怎么用啊!!!
场景 2
假如,有个【转正评分】模板,想找到评分得分 > 5 的的第二个人是谁,怎么办,(没错,我就是不找第一个,就要第二个,因为第一个没挑战)
- 假设我们有个【转正评分明细】,数据如下,按照上面的逻辑,我们应该取到的是【猪八戒】
| 评价人姓名 | 评价得分 |
|---|---|
| 孙悟空 | 11 |
| 猪八戒 | 6 |
| 沙僧 | 4 |
| 小白 | 3 |
// 单行文本框的值计算公式设置为如下:
MAP(转正评分明细.控件自身, IF(转正评分明细.评价得分 > 5, 转正评分明细.评价人姓名, false), 2)
解析
MAP(转正评分明细.控件自身, IF(转正评分明细.评价得分 > 5, 转正评分明细.评价人姓名, false))
当我们只输入以上计算公式时,筛选出的数据为
| 评价人姓名 |
|---|
| 孙悟空 |
| 猪八戒 |
我们最终要取的是第二条,那么就告诉 MAP函数,我要取第二条数据,此时我们就会使用到【索引】
MAP(转正评分明细.控件自身, IF(转正评分明细.评价得分 > 5, 转正评分明细.评价人姓名, false), 2)
// 取第一条呢
MAP(转正评分明细.控件自身, IF(转正评分明细.评价得分 > 5, 转正评分明细.评价人姓名, false), 1)
欢迎关注我的个人公众号「「小枫学幽默」」一起成长,一起分享生活!!