子表单内文字合并

楼主
我是社区第845866位番薯,欢迎点我头像关注我哦~

知识库外链:https://t6ixa9nyl6.jiandaoyun.com/sharedoc/1GtdGh9HajdMad2buHbAhH

表单外链:https://slc5umd6bu.jiandaoyun.com/f/6078f1183280b80007cf5ce4

应用安装链接:https://jiandaoyun.com/a/5ea8076bcfdfea0006062a29(“子表单文字合并”分组内)

 

一、问题背景

       在信息填报时,员工用子表单填写信息明细,但是领导审核的时候或者上报后的数据查看界面,希望看见的是总结分类后的精简内容。比如交易员在子表单1记录一个用户单笔交易的证券类型、证券名称、买卖性质,希望在子表单2根据证券类型对不同名称+买卖性质的数据进行汇总显示。具体效果可以参考图片

已知条件:子表单1手动填写明细,即类型、名称、买卖性质

需要实现:子表单2自动根据子表单1填写的数据,根据类型对不同的名称+买卖性质汇总显示

二、解决思路

        针对这一场景初看没有什么思路,因为如果用SPLIT,根据已知条件无法确定分割位置,用LEN但是字符的个数不确定,因此我们需要创造条件去分割。想要截取,要确定首尾,但是我们目前唯一的确定可以分割的字段是类型,因此我们考虑在辅助字段内把类型拼接到一段字符的首尾,再根据类型分别分割首尾获取中间的”名称+买卖性质“

       1、子表单1:加辅助字段:【类型-名称-买卖性质-类型】

       2、子表单2:先根据”【类型-“分割获取”名称-买卖性质-类型】",再根据"-类型】"分割获取"名称-买卖性质",最后对获取的结果去重

三、关键公式解读

       其他的字段的公式和设置比较简单,就不再赘述,这里主要解析下子表单2的”明细“字段的公式,公式比较长,但是拆分来看就比较清晰:

  1. 根据"【类型-"分割:(SPLIT(类型+名称+买卖性质,CONCATENATE('【',交易汇总.类型,'-'))[1]),CONCATENATE('-',交易汇总.类型,'】')
  2. 由于根据1中的公式,合并的文本会被分割成多个数组,比如合并的文本内有类型A的3条数据,那么根据类型A分割就会分割成4个数组,其中第0个是和类型A无关的数据,第1、2、3是和类型A相关的,因此需要分别取1中分割的数组123。即,某类型为n个,则我们需要取n个数组,对应的数组序号分别是1、2、3........n。获取到某个数组后,我们再根据"-类型】"分割,那么分割的数组中,第0个就是我们需要的“名称+买卖性质”,即公式为:SPLIT(TEXT(1中的公式[需要取的数组序号]),CONCATENATE('-',交易汇总.类型,'】'))[0]
  3. 某类型为n个,则我们需要取n个数组,对应的数组序号分别是1、2、3........n,由于这个逻辑,需要我们写多个IF,即:IF(交易汇总.数量>=1,SPLIT(TEXT(1中的公式[1]),CONCATENATE('-',交易汇总.类型,'】'))[0],''),IF(交易汇总.数量>=2,CONCATENATE(',',1中的公式[2]),CONCATENATE('-',交易汇总.类型,'】'))[0])),.......,IF(交易汇总.数量>=n,CONCATENATE(',',SPLIT(TEXT(1中的公式[n]),CONCATENATE('-',交易汇总.类型,'】'))[0]))

 

注:案例内的“交易汇总.明细”字段,是按照每个相同类型最多在子表单1内填写10个设置的公式,使用时如果有可能超出10个,则需要在CONCATENATE中补充上述3中的IF公式

 即:IF(交易汇总.数量>=n,CONCATENATE(',',SPLIT(TEXT((SPLIT(类型+名称+买卖性质,CONCATENATE('【',交易汇总.类型,'-'))[1]),CONCATENATE('-',交易汇总.类型,'】')[n]),CONCATENATE('-',交易汇总.类型,'】'))[0])

分享扩散:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0回帖数 1关注人数 1982浏览人数
最后回复于:2022-2-23 14:20

返回顶部 返回列表