前言:
- 本篇是2019年3月有用户在简道云老社区发布的一个有奖问答的解答。
- 本篇是第26篇博客中讲解的“不借助聚合表实现子表单数字汇总”方法的具体应用,可用在项目工期设置、财务管理流水台账等。
- 本篇是2019-04-02发布在原简道云老社区的第35篇,发布在帆软社区的第28篇文章,以后还有更多(技术类、管理类、理论类),为了不迷失不迷路,【请收藏这个链接集合】,以后所有博客都会汇集于此,敬请期待!
解答用户有奖问答提问:子表单数字汇总的一种应用
有谁能帮我解决下目前遇到的难题?
问题具体是这样的: 子表里面的,工期自动计算。具体是项目开工有开工日期,开工后分很多个阶段,每个项目的阶段数不等,每个阶段的施工天数不等,现在我是用子表单做的,如下图,这里的截止日期,现在我只能对照着手机日历一天天的去数然后手动输入,这样不但麻烦而且还容易出错。我感觉应该可以直接自动计算的,就是想不到改怎么处理,求大神帮解决下,解决了立即发红包300,谢谢了。
其实解决此问题可以使用我在去年4月19日发布的第18篇博客(帆软新社区的第26篇)中的方法,不过那篇博客里的方法现在来看有点笨了,现在有了更好的解决方法,现在的这个新思路不再是一个个去穷举,而是一个通用的解决方法,实现起来也更简单。以我目前的经验的来看,这个方法可以算是一个基础功能,不但能解决当前提问的人面临的问题还能解决博客里的收款问题,还有财务管理里常用的流水台账的问题。
感兴趣的可以先点击查看我的第18篇博客(帆软新社区的第26篇),链接:https://bbs.fanruan.com/thread-133726-1-1.html
先来看下提问的问题: 每个施工截止日期都是开工日期加上之前所有施工阶段施工天数,这里如果用函数表示的话,应该如下:当前第N阶段施工截止日期==开工日期+(阶段1施工天数+阶段2施工天数+阶段3施工天数+......+阶段N施工天数),具体实现的步骤如下:
1.)在数字控件“施工天数”后添加一个单行文本控件,命名“工期+补位符+逗号”,对其写函数如下: 施工日期安排详情.工期+补位符+逗号= CONCATENATE(RIGHT(CONCATENATE("########",施工日期安排详情.施工天数),9),",") 次函数的意思是对施工天数这一值用"#"做补位并截取右边9位,然后在添加一个逗号“,”,注意这里用的是英文的逗号。
2.)主表中添加一个的单行文本控件,对其命名“工期+补位符+逗号集合”,其公式编辑为: 工期+补位符+逗号集合= CONCATENATE(施工日期安排详情.工期+补位符+逗号)
3.)再在子表中添加一个单行文本控件对其命名“根据序号截取工期+补位符+逗号集合”,公式编辑为: 子表单.分割成数组后求和= SUMPRODUCT(SPLIT(CONCATENATE(SPLIT(LEFT(工期+补位符集合,子表单.序号*10),",")),"#"))
- 先通过LEFT(工期+补位符集合,子表单.序号*10),按子表单序号来依次截取步骤2中的文本集合,由于步骤1中对施工天数做了补位截取右9位后又添加了一个英文逗号,所以这里是按子表单.序号*10来从左到右依次截取的,目的是让当前阶段施工天数参与组成的值能完整的被截取到当前单行文本里。
-
- 再通过SPLIT(LEFT(工期+补位符集合,子表单.序号*10),",")把上一环节1截取的值中的英文逗号“,”去除掉,注意:分割函数SPLIT所用的分隔符,就是分割目标值中要去除的值。例如:#######11,#######22,######333
- 通过2的环节,SPLIT(LEFT(工期+补位符集合,子表单.序号*10),",")已是一组数组,此时再通过函数CONCATENATE把2步骤中的数组见的英文逗号消除掉,此时CONCATENATE(SPLIT(LEFT(工期+补位符集合,子表单.序号*10),","))输出的值就是一串不含英文逗号的文本。例如:#######11#######22######333
- 通过SPLIT(CONCATENATE(SPLIT(LEFT(工期+补位符集合,子表单.序号*10),",")),"#")把3中的一串不含英文逗号文本的字符串分割称数组,输出结果为:,,,,,,11,,,,,,,22,,,,,,333
- 通过SUMPRODUCT(SPLIT(CONCATENATE(SPLIT(LEFT(工期+补位符集合,子表单.序号*10),",")),"#"))把4中的 ,,,,,,11,,,,,,,22,,,,,,333数组进行求和计算。得出当前工期天数的总和366。
测试外链:https://link.jiandaoyun.com/f/5ca31ef3da59df456ce9a0e3
各控件信息描述处标注有该有的函数函数公式。
注意: 1、此次方法中一个关键点是子表单自动编号的功能,此功能是一个很重要的基础功能,没有它,子表单里很多重要的常用功能就解决不了。子表单需要自动添加的功能,在我的另一篇博客(https://bbs.fanruan.com/thread-133183-1-1.html)有过详细的分析,不清楚的朋友可以进去仔细看下。
2、方法中的关键函数组合 SUMPRODUCT(SPLIT(CONCATENATE(SPLIT(LEFT(工期+补位符集合,子表单.序号*10),",")),"#")) 中的函数SUMPRODUCT是此方法和文章开头讲到的那篇博客中讲到的方法最大的不同之处,也是使得此方法成为此类问题的通用解决方法的关键所在,掌握常用函数的基础用法以及他们可能的各种变形真的很重要。
点击查看作者更多博文: 1、盲人妻子的困惑——子表单自动连续编号的问题【发布时间: 2017-07-10】 2、让人又爱又恨的子表单【发布时间: 2020-10-08】 3、4种不同方法解决并发问题——函数触发机制分析【发布时间: 2017-12-05】 4、如何不借助聚合表调用子表单数据——解析一【发布时间: 2018-02-12】 5、如何确保子表添加字段值不出现重复【发布时间: 2018-03-11】 6、快速查看子表重复情况的方法一【发布时间: 2018-03-12】 7、致简道云的一封信!【发布时间: 2018-10-29】 8、快速查看子表重复情况的方法二【发布时间: 2018-03-13】 9、过滤敏感词或符号【发布时间: 2020-10-27】 10、快速准确调取上次采购价的方法【发布时间: 2018-03-18】 11、合并同类项【发布时间: 2018-03-19】 12、子表中合并同类项【发布时间: 2018-04-15】 13、如何让子表单信息分行显示在多行文本中?【发布时间: 2018-04-19】 14、如何做到快速添加子表字段值且永不会重复?【发布时间: 2018-06-23】 15、流程审批模型【发布时间: 2018-06-23】 16、流程审批节点状态数汇总模型【发布时间: 2018-10-02】 17、流程审批节点用时汇总模型【发布时间: 2018-10-03】 18、关于调库问题的分析【发布时间: 2018-09-28】 19、帮你打通子表单数字编号的任督二脉【发布时间: 2019-02-04】 20、子表单跨数据自动连续数字编号【发布时间: 2019-02-05】 21、子表单数字编号——分列连续数字编号【发布时间: 2019-02-06】 22、子表单数字编号——等差数列编号【发布时间: 2019-02-07】 23、子表单数字编号——“倒序”数字编号【发布时间: 2019-02-08】 24、头脑中的大象【发布时间: 2019-02-08】 25、如何提取成员多选字段的文本值?【发布时间: 2019-04-19】 26、不借助聚合表直接在当前子表单中实现数字汇总的一种方法【发布时间: 2019-04-19】 27、分数排名、上次采购价等问题都要用到的一个重要函数组合【发布时间: 2018-03-10】
作者简介:【点击查看作者社区主页】
- 牛中伟
- 简道云官方连续6年指定定制服务商
- 利用简道云帮客户实施项目近300个
- 在原简道云老社区更新发布博客44篇
- 新老社区博客总阅读量超50万,留言1000余条
- 其中关于子表单的一篇博客收到用户打赏金额累计超7000元
- 关注帆软社区我的这个账号,有新博客更新,第一时间收到提醒
- 感谢大家一路以来的认可和支持,我会再接再厉,分享更多有价值的内容
- 如有任何简道云方面的问题,欢迎留言区留言或单独私信给我,期待与你的交流
不自谦能力概述:
- 精通子表单各类复杂用法
- 谙熟函数特性、及各种函数组合用法
- 独创利用简道云处理多级BOM的方法
- 深刻理解进销存系统及进销存思维模型
- 有一定的文本书写能力,总结复盘能力
- 较强的抽象思维能力、逻辑思维能力、统筹能力
- 对陌生行业陌生业务有快速的信息搜集整合和学习消化能力
- 拥有一整套成熟有效的整理系统需求文档的思想、方法和工具
- 很多用户感觉一直解决不了的问题在我们这里可能早已不是问题
- 了解如何制定完善的报表分析计划,并借此洞察项目业务背景和业务痛点。
- 理解系统与企业管理的关系,对如何在企业顺利推进管理系统落地有丰富经验和独到见解。
- 有一整套经上百大小项目锤炼过的适合简道云这类低代码工具帮助客户实施项目的流程和方法,确保系统更好实施,更快部署,更高完整度交付,确保系统更符合客户预期,甚至超预期,给客户真正带来价值!
懂简道云的冬泳高手,关注我的帆软社区账号,交个朋友!
编辑于 2020-11-21 09:50 编辑于 2020-11-22 10:25 编辑于 2020-11-24 15:01
|