本帖最后由 图客 于 2015-12-31 09:38 编辑

这是上海张兄出的一道题:销售业绩用填表公式填写后,要求用一个业务公式给业绩排名次,相同业绩同一名次,名次连续不跳号。

这看起来很简单,就是把业绩从大到小排列,再把名次编上去,相同业绩的编成同一名次。可真的实现起来就也是一个考验业务公式水平的题目。

先看一下准备的数据:

1.png

这是模版结构,下面是手工录入的数据(数据可以用表间公式填充,这里测试就没有写了):

2.png   

为了测试方便,定义了一个状态字段:

3.png   

准备工作完成了,下面就开始按要求写业务公式了:

先介绍一下我自已的做法(我的做法复杂执行效率差,唉差距啊!):

1数据接口:

jk1.png   

这里的业绩表达式用的是:最大值(本模板.明细.业绩)

jk2.png   

这里的业绩表达式用的是:最大值(本模板.明细.业绩)

gltj.jpg

注:这里的过滤条件是业绩小于自定义参数业绩。

jk3.png

2业务公式如下:

gs1-1.png   

这条公式就是给业绩最大的赋值名次:1

gs1-2.png   

子数据源1.png   

这条公式就是依次根据前一名次的业绩查找下一名次的业绩,并给赋值名次。

数据源解释:如序号列表为1

名次业绩为:30000

业绩单条记录:

   单条记录2.jpg

单条记录1.jpg

找到这两条记录,给名次赋值:1+12

下面介绍上海张兄的实现方式(他的实现方法简便多了):

1张兄用的数据接口:

   jk5.png

名次表达式为:最大值( 空值替换(本模板.明细.名次,0) ),用空值替换函数原因:因为最初时名次为空,需要给名次给个最初的数值。

   jk4.png

这个数据接口中要“重复数据只显示一次”勾选上,并且排序为从大到小降序排列。

2、张兄用的业务公式:

清空名次公式:

gs2-1.png   

排名次公式

gs2-2.png   

子数据源2.png   

数据源理解:业绩去重排序数据接口的数值为:30000时,名次最大号为:0,公式赋值名次为0+11。依次业绩为:20000时,名次最大号为1,公式赋值名次为1+12.……

公式执行后,填表公式刷新,就得到结果:

jg.png   


+10
4人收藏
14 条回帖
gderp云粉2015-12-30 22:15:27
写的很详细,这样的教程学习很方便。谢谢张兄和图客
+10
赵俊云苗2017-11-23 10:48:37
超过10名怎么操作啊
+10
赵俊云苗2017-11-23 17:03:53
原来是要把所有文本设置成整数就行
+10
乐乐1云师2017-11-29 08:53:56
文本的排序和整数的排序是不一样的。
对于 1, 2, 3, 10, 11, 20, 21。这几个值,如果当做文本来排序是:

1
11
2
20
21
3
如果当做整数来排序是:
1
2
3
10
11
20
21




+10
149448929490447云圣2018-10-19 17:30:57
学云表
文章baner7.jpg
+10
郑应春云师2018-12-14 22:33:31
图客 发表于 2015-12-30 21:03
这是上海张兄出的一道题:销售业绩用填表公式填写后,要求用一个业务公式给业绩排名次,相同业绩同一名次, ...

非常感谢楼主,特别的实用并且简单,通过这个教程又学习到了关于复杂接口的使用,特别感谢!很有帮助。。。
+10
kaikai760211云粉2019-4-16 10:19:03
这个排名好像不好实现,还是这个版本实现有问题了 ,你这个版本好像是以前的
+10
1黄剑华云粉2019-4-16 14:46:48
本帖最后由 1黄剑华 于 2019-4-16 15:53 编辑

排序也可以用填表公式完成:
1.     定义一个按钮,通过按钮触发触发排序事件
1.1.jpg 1.2.jpg

2.     计算本次需要排序的人数(可通过值变化事件合计人数)---本次合计通过明细表中的业绩数据项合计
a.     合计前先初始化【总人数】
2.a.jpg

b.开始计算
2.b.jpg
3.     知道排序的最大值后开始进行赋值
a.     通过使用全局数据接口中的序号列表进行循环赋值
3.a.jpg 3.a-2.jpg
b.     因为上面是赋值名次号,所以通过值变化-名次号即可实现循环操作
3.b.jpg
c.     在循环时,找出尚未排序的业绩的最大值
3.c.jpg
d.     找到最大值后,通过匹配条件,将最大值的值与业绩匹配后,赋值名次
3.d.jpg
e.     赋值完后,需要清空最大值,以便于下次循环时,清除当前最大值
3.e.jpg
效果图
效果图.jpg
+10
黄磊云师2019-5-23 15:09:17
我来说说我的思路,我用两张表来做,重点在于数据接口里面有自动排序的功能。数据接口排完顺序直接赋值就好了。话不多说上图:
QQ截图20190523145706.jpg

数据接口如图:(要在这里做排序)
QQ截图20190523145910.jpg

目标表模板:
QQ截图20190523150051.jpg

目标表公式:
QQ截图20190523150324.jpg

结果如下:
QQ截图20190523150602.jpg
QQ截图20190523150626.jpg

其实重点在于数据接口,我想调用本表单的数据接口,在赋值前做清空 ,是不是也能实现这个功能呢?


+10
12下一页
需要登录后才可进行回复 登录

玩转云表从入门到精通
扫码添加微信立即领取

·云表创始人授课文件
·加入社群与培训学习
·切磋云表开发玩法

商务咨询:0756-3335860
客服咨询