-
-
luojr 初学数据Lv2
发表于2022-2-25 11:28
楼主
本帖最后由 luojr 于 2022-2-28 13:57 编辑
一 需求场景
在计算分析表时,常常会出现某个指标计算出相同数据的情况,比如张三的请假天数和李四的请假天数都为3天,目前想要实现的是把相同数据的单元格背景色都标红(或其他颜色)。有多种方式可以实现噢!
二 表样设计
方法1:方法思路:对需要找出相同数据的字段进行排序,在该字段后插入一个辅助列,辅助列的目的是通过让浮动出的数据比对大小,因为已经排序过了,所以上下表元的数值一定是差值最小的,相等的数据一定相邻,如果相同则让辅助列返回1,相当于把相同的数据表元定位到了。表元的背景颜色表达式就可以通过辅助列的值来进行判断,实现颜色控制。
这个例子是请假时间一样的表元其背景色设置为红色
首先要根据请假时间排序
然后做一个辅助列E,表达式为if(D2=D2.upcell,1,if(D2=D2.downcell,1,0)),目的是定位到重复字段,定位到重复字段
表达式中的意思就是如果当前表元等于浮动出的上一个表元的值或者当前表元等于浮动出的下一个表元的值,就返回1,否则返回0。
然后就简单啦,在背景色里写一个判断就可以啦 if(E2=1,'#D8210D','#FFFFFF')。
效果图如上,别忘记将辅助列隐藏~
当然,聪明的您应该也看出来啦,第一种方法有很大的局限性,就是必须要把想要找出重复数据的字段进行排序,在实际业务场景中不太方便,所以您可以再看下第二种方法!
方法2:
方法思路:也是需要先插入一列作为辅助列,目的也同样是定位到数据相同的表元。
表达式里需要使用表元对象的siblings属性、select数组函数、length属性
①使用表元对象的siblings属性,含义为表元的兄弟节点,是一个数组,包含表元自己。
②使用select根据指定的过滤条件表达式过滤数组,将满足条件的元素形成一个新的数组返回
③再用length返回数组的长度
例子同方法一,具体表达式写法为 d2.siblings.select(@=d2).length
附上例子里的表达式
背景颜色表达式
这样不需要排序就可以定位到相同表元啦!
是不是感觉表元对象和数组函数十分有趣呢,如果还想了解更多,可以进入更详细的讲解链接呢https://bbs.esensoft.com/thread-133624-1-1.html
3 总结
实际上实现这个需求的难点在于如何定位到该字段浮动出的相同数据,定位后写背景颜色表达式就简单啦~
附上分析表
分析表_20220225_112659.zip
(3.48 KB, 下载次数: )
大佬们如果还有其他方式也可以在帖子下留言哟(^U^)ノ~YO。
一 需求场景
在计算分析表时,常常会出现某个指标计算出相同数据的情况,比如张三的请假天数和李四的请假天数都为3天,目前想要实现的是把相同数据的单元格背景色都标红(或其他颜色)。有多种方式可以实现噢!
二 表样设计
方法1:方法思路:对需要找出相同数据的字段进行排序,在该字段后插入一个辅助列,辅助列的目的是通过让浮动出的数据比对大小,因为已经排序过了,所以上下表元的数值一定是差值最小的,相等的数据一定相邻,如果相同则让辅助列返回1,相当于把相同的数据表元定位到了。表元的背景颜色表达式就可以通过辅助列的值来进行判断,实现颜色控制。
这个例子是请假时间一样的表元其背景色设置为红色

首先要根据请假时间排序

然后做一个辅助列E,表达式为if(D2=D2.upcell,1,if(D2=D2.downcell,1,0)),目的是定位到重复字段,定位到重复字段
表达式中的意思就是如果当前表元等于浮动出的上一个表元的值或者当前表元等于浮动出的下一个表元的值,就返回1,否则返回0。

然后就简单啦,在背景色里写一个判断就可以啦 if(E2=1,'#D8210D','#FFFFFF')。

效果图如上,别忘记将辅助列隐藏~
当然,聪明的您应该也看出来啦,第一种方法有很大的局限性,就是必须要把想要找出重复数据的字段进行排序,在实际业务场景中不太方便,所以您可以再看下第二种方法!
方法2:
方法思路:也是需要先插入一列作为辅助列,目的也同样是定位到数据相同的表元。
表达式里需要使用表元对象的siblings属性、select数组函数、length属性
①使用表元对象的siblings属性,含义为表元的兄弟节点,是一个数组,包含表元自己。

②使用select根据指定的过滤条件表达式过滤数组,将满足条件的元素形成一个新的数组返回

③再用length返回数组的长度

例子同方法一,具体表达式写法为 d2.siblings.select(@=d2).length

附上例子里的表达式

背景颜色表达式

这样不需要排序就可以定位到相同表元啦!
是不是感觉表元对象和数组函数十分有趣呢,如果还想了解更多,可以进入更详细的讲解链接呢https://bbs.esensoft.com/thread-133624-1-1.html
3 总结
实际上实现这个需求的难点在于如何定位到该字段浮动出的相同数据,定位后写背景颜色表达式就简单啦~
附上分析表

大佬们如果还有其他方式也可以在帖子下留言哟(^U^)ノ~YO。