请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
简道云团妹(uid:352185)
职业资格认证:尚未取得认证
拆分开始-结束 的每一天
一、案例说明   1、问题背景 在子表单中录入开始时间和结束时间,可能会录入多条,需要在第二个子表单中将每一天都显示出来。   2、解决思路 在录入表中计算出开始和结束的天数差+1得到重复次数,然后将开始时间重复显示并用逗号隔开,以背景中的截图为例,显示为20210401,20210401,20210401,然后通过数据联动关联出天数集合,为1,2,3,重复次数为几,天数集合就显示到几,然后将开始时间集合和天数集合显示到子表单2中,每一条记录对应分别在开始时间上加上1天、2天、3天,这样就可以得到每一天的日期了。   3、知识库外链 https://t6ixa9nyl6.jiandaoyun.com/sharedoc/15BzE0ELtkxJrVd3BJL9ob   4、应用安装链接 https://jiandaoyun.com/a/606ea2ab167b14000701069b     二、设计说明   1、表单及功能说明 拆分开始-结束的每一天:数据录入表,录入开始和结束时间,自动拆分显示每一天; 天数集合基础表:录入重复次数对应的天数集合; 序号基础表:录入天数对应的子表单序号。   2、具体设置 (1)天数集合基础表 表单中添加数字和文本字段,然后对应录入数据,开始时间和结束时间天数差最大是多少,这里就要录到多少。   (2)序号基础表 在主表和子表单中分别添加一个数字,并录入对应的基础数据,多条记录的天数差合计最大有几天,这里就要录入到几,比如每条记录天数差最多为10天,那这里就要录入到20。   (3)拆分开始-结束每一天 开始时间、结束时间:手动录入; 重复次数:公式为  DAYS(日期录入.结束时间,日期录入.开始时间)+1  意思是获取天数差; 开始时间集合:公式为  REPT(CONCATENATE(TEXT(DATE(日期录入.开始时间),'yyyyMMdd'),','),日期录入.重复次数)  通过rept函数重复显示开始时间,并用逗号隔开; 天数集合:设置数据联动,通过重复次数联动天数集合基础表。 开始时间集合汇总:公式为  CONCATENATE(日期录入.开始时间集合)  将日期录入子表中多条记录的开始时间集合汇总在一起,通过逗号隔开显示; 天数汇总:公式为  TEXT(日期录入.天数集合)  将日期录入子表中多条记录的天数集合汇总在一起,通过逗号隔开显示; 天数:COUNT(SPLIT(天数汇总,','))  获取天数汇总里面的数字个数; 日期显示子表单:对这个子表单设置整体联动,通过天数联动序号基础表中的序号; 开始时间文本:公式为  SPLIT(开始时间集合汇总,',')  通过序号获取开始时间集合汇总中的每一个日期; 天数:公式为  SPLIT(天数汇总,',')  通过序号获取天数汇总中的每一个天数; 最终日期:公式为  DATE(VALUE(LEFT(日期显示.开始时间文本,4)),VALUE(MID(日期显示.开始时间文本,5,2)),VALUE(RIGHT(日期显示.开始时间文本,2))+日期显示.天数-1)  用开始时间文本加上天数,得到最终的日期,并转换成日期格式。
去除节假日 计算工作日期
一、案例说明   1、问题背景 已知开始时间,并在子表单里面列出了所有的周末和节假日(联动基础表获取),输入工作日天数,返回在开始日期之后、与该日期相隔指定工作日的某一日期的日期值。   2、解决思路 在子表单中列出开始日期之后的每一天,判断当天是否为节假日,之后得出这一天于开始日期之间的工作日天数,将这个工作日天数于主表输入的工作日对比,若天数一致,则返回对应的日期为最终的日期。   3、知识库外链 https://t6ixa9nyl6.jiandaoyun.com/sharedoc/21WYRI4Xvt3GRHuk1eQbPK   4、应用安装链接 https://jiandaoyun.com/a/6051ba39c53e6d000735e884   二、设计说明   1、表单及功能说明 计算表:去除节假日及周末后返回对应的工作日日期; 辅助表1:基础联动表,用于子表单序号联动; 辅助表2:休息日基础表,用于联动开始日期当月和下月所有的休息日。   2、具体设置 (1)辅助表1 分别在主表和子表单中新建一个数字字段,并在数据管理录入数据。   根据输入的最大工作日天数来录入一个固定天数对应的序号记录,比如最大工作日天数为10,考虑加上中间的节假日的情况,可以录入20,如果最大工作日天数为20,可以录入40对应的记录。   (2)辅助表2 年月:录入年月,例如202103; 休息日:在子表单中录入这个月的所有休息日;       (3)计算表   开始日期、工作日天数:由填写人员手动输入;   默认联动辅助:辅助的基础联动表中固定天数录入的是多少,这里就设置默认值为多少;   子表单整体:添加右侧的6个字段,并对子表单整体设置数据联动,通过默认联动辅助,将基础联动表中的子表单序号联动到本表中;   子表单.日期时间:公式为 DATEDELTA(开始日期(手动输入),子表单.序号)   ,意思是将主表的开始日期依次加上子表单序号显示每一天,(比如开始时间为4月1日,子表单从4月2日开始一直显示到4月21日),目的是为了判断每一行的日期和开始时间相差的工作日天数,判断是否和主表的工作日一致;   子表单.是否为休息日:公式为 IF(SEARCH(TEXT(VALUE(子表单.日期时间)),2个月休息日汇总)!=0,1,0)  判断当前这个日期是否可以在2个月休息日汇总里面找到,找到返回1,没找到返回0;   不去除休息日的天数差:公式为  IF(子表单.日期时间<=开始日期(手动输入),0,DAYS(子表单.日期时间,开始日期(手动输入)))   意思是如果这条记录的日期小于主表的开始时间,就返回0,否则返回这2个日期的天数差;   是否为休息日汇总:公式为 TEXT(子表单.是否为休息日)   意思是将子表单中是否为休息日的数据全部列出,并用逗号隔开,最终效果为1,1,0,0,0这种格式,其中1和0的顺序不定由是否为休息日的公式判断输出0还是1;   去除休息日的天数差:公式为  子表单.不去除休息日天数差-SUMPRODUCT(SPLIT(LEFT(是否为休息日汇总,子表单.序号*2),','))  意思是取出当前这条记录之前所有的休息日组合,然后求和,得到休息日的天数和,然后用不去除休息日的天数差扣除总的休息日,得到最终的天数差;   子表单最终日期:公式为  IF(子表单.去除休息日天数差==工作日天数(手动输入),子表单.日期时间,)   判断子表单取出休息日的天数差是否等于主表的工作日天数,如果等于,返回子表单的日期,否则返回空;   最后工作日:公式为  MIN(子表单.最终日期)  获取子表单最终日期里面最小的那一天,就是在开始日期之后、与该日期相隔指定工作日的那个日期。     本月休息日明细、下月休息日明细:这2个子表单记录开始时间近2个月的所有休息日期,设置子表单整体联动,通过本月和下月联动休息日基础表;   2个月休息日汇总:公式为  CONCATENATE(TEXT(本月休息日明细.日期时间),',',TEXT(下月休息日明细.日期时间))  将2个子表单的休息日组合在一起,用逗号隔开显示;   本月:公式为  TEXT(DATE(开始日期(手动输入)),'yyyyMM') 获取开始日期所在年月;   下月:公式为  TEXT(DATE(YEAR(开始日期(手动输入)),MONTH(开始日期(手动输入))+1,1),'yyyyMM')  获取开始日期下个月的年月。     (4)最终效果 编辑于 2021-8-16 15:20
找出某字符所在的位置
应用场景:当需要提取出固定字符在一串字符串中的位置的时候,当同一个字符出现多次的时候,SEARCH函数无法检索出对应的位置   思路:把分割的字符使用uuid代替,在子表单中根据序号获取到每一个uuid所在的位置   安装链接:https://jiandaoyun.com/a/60725a6697f268000875f868    表单填写外链:https://tqs0cu58u2.jiandaoyun.com/f/60728defe631c20008ad0215   知识库外链:https://t6ixa9nyl6.jiandaoyun.com/sharedoc/7GIpZ5omirWPNCWCSLe3IV       数字:COUNT(SPLIT(需要分割的字符串,分割字段))-1     判断有一个需要分割的字符   单行文本:CONCATENATE(辅助字段1)  辅助字段1转成一串文本   辅助字段1:CONCATENATE(子表单.序号,子表单.辅助字段2)   把序号和辅助字段2进行拼接   辅助字段2:SPLIT(需要分割的字符串,分割字段)  取出被分割的的数组中序对应序号的字段   字符所在的位置:LEN(SPLIT(单行文本,子表单.序号))+LEN(子表单.辅助字段2)+1   把主表的单行文本的按照序号进行分割并且取出第一位的长度+辅助字段2的长度再+1就是对应字所在的位置 编辑于 2021-8-9 16:56
考场预约案例
1. 简介 1.1 场景简介 在考场预约时,有多个考场,每个考场都有最多人数限制,报名时,如第一考场没报满,则必须选第一考场;如第一个考场的人数满了后,如果第二考场还有空位,可以选第二考场,以此类推。   1.2 解决方法 通过聚合表计算每个考场的剩余座位,将剩余位置通过数据联动调用到预约表中,通过子表序号,显示出最小序号对应的考点。   1.3 预期效果 每次提交报名表时,剩余位置都会对应减少,当本考场剩余位置小于等于 0 时,则自动预约到下一考场。(子表单在实际应用中可以设置为不可见)       2. 操作步骤 2.1 配置「考场基础表」 首先创建一个「考场基础表」,表单中录入考场名称及其最大容纳人数信息,其中最大容纳人数字段选用 数字字段。     2.2 配置「考试预约报名表」 1)创建「考试预约报名表」,预约报名人数选用 数字字段,设置默认值为 1。     2)「考试预约报名表」中添加一个子表单,设置默认值,从小到大记录序号和考场名称。   注:剩余字段配置完聚合表再设置。     2.3 配置聚合表 1)新建一个聚合表,数据来源选择多表关联,关联表选择「考场基础表」和「考试预约报名表」,关联字段设置为(预约)考场。     2)聚合表的行表头选择考场,指标为剩余可报名人数:最大容纳人数-预约报名人数。     2.4 表单关联设置 1)「考试预约报名表」中子表单的剩余位置选用 数字字段,对其设置 数据联动,联动表单为聚合表,当聚合表的考场等于子表单的考场时,剩余位置联动出聚合表中的剩余可报名人数。     2)子表单中添加一个序号辅助字段,设置公式为: IF(子表单.剩余位置>0,子表单.序号,"") 表示当剩余位置的数字大于 0 时,则该字段显示对应考场的序号,否则为空。     3)「考试预约报名表」中添加一个 数字字段 为最小考场序号,设置公式为: MIN(子表单.序号辅助) 表示最小考场序号的值为序号辅助的最小值。     4)子表单中添加最小考场字段,设置公式为: IF(AND(子表单.序号辅助==最小考场序号,ISEMPTY(子表单.考场)==0),子表单.考场,"") 表示只有当本行序号辅助字段的值等于最小考场序号,且子表单的考场名称不为空时,最小考场的显示为当前行的考场名称,否则为空。     5)预约考场字段设置公式为: CONCATENATE(子表单.最小考场) 显示计算出的最小考场。   最后将子表单和最小考场序号字段设置为不可见,即可完成报名表的设置。       3. 效果演示 如第一考场最多容纳 10 人,前 10 人提交报名表的预约考场都为第一考场,当 10 个人提交报名表后,第 11 个人提交报名表则显示预约考场为第二考场。 编辑于 2021-8-9 14:04
每月提成计算案例
点击安装 「每月提成计算」模板 ,体验使用效果。   在销售环节中,销售人员的工资常常是与该月的销售额挂钩的,根据销售额计算出提成,再加上基础工资,便是本月的工资总计。重点就在于,需要先将该销售人员该月的销售总额汇总出来,再计算对应的提成。   设计思路为:(1)销售表 > (2)聚合表计算每月销售额 > (3)工资表 > (4)调用每月销售额并计算提成     1. 销售表 案例中销售表设计仅保留必要字段。制作好销售表后录入销售数据。 其中需要添加一个「单行文本」作为辅助字段,提取出销售日期中的年月,以供聚合表按年月汇总。     2. 聚合表计算每月销售额 新建聚合表、添加数据来源、添加行表头、计算月度销售额指标。     3. 工资表 案例中工资表设计仅保留必要字段。 月份为「单行文本」,编写公式默认获取当前年月(每月底计算本月的工资,因此取当前时间的年月即可)。 销售员为「下拉框」,数据联动,根据年月调用出「销售表」中对应的销售人员姓名。     4. 调用每月销售额并计算提成 销售额为「关联数据」,以「年月」和「销售姓名」为条件,调用出「聚合表」中对应的「销售额」。并将销售额作为主键字段。     5. 编写提成公式     6. 实际效果     7. 表单优化 销售表与工资表中为了方便统计,添加了一些辅助字段,如果不想被填表人看到,可以设置为「不可见」。 如果设置为不可见,则同时一定要设置 表单属性 > 不可见字段赋值 > 始终重新计算   点击安装 「每月提成计算」模板 ,体验使用效果。 编辑于 2021-8-2 16:49
报名人数控制案例
点击安装 「报名人数控制」模板 ,体验使用效果。   活动报名中常常存在一个人数限制的问题,如社团报名、课程报名、公司活动报名等,达到一定人数后就不可以再提交报名申请了。其实这也可以看成一个进销存问题,活动的人数限制为「进」,报名人数为「销」,剩余名额为「存」,始终保证剩余名额大于等于0即可。   设计思路为:(1)活动信息表 > (2)报名表 > (3)计算剩余名额并添加校验 > (4)在报名表单中显示实时剩余名额 > (5)测试实际效果     1. 活动信息表(进)     2. 报名表(销)   · 「活动名称」设置关联其他表单数据,调用活动信息表中的活动名称字段。这样在录入时可以直接选择活动信息表中的活动名称,不需要手工录入了↓↓↓     3. 计算剩余名额(存) 新建聚合表,选择多表关联作为数据来源,建立关联字段,并添加行表头。   计算剩余可报名人数;并设置校验条件,当剩余名额小于0时不允许提交数据。与下文「第4步骤」结合,当报名表单中录入的人数,使得实时计算的剩余名额小于0时就无法提交数据,避免超额报名的情况。     4.在报名表单中调用剩余名额 在数字字段「当前剩余名额」中,设置数据联动,调用聚合表中求出的剩余可报名人数。     5. 实际效果 · 如果提交数据时,报名人数不超过当前剩余名额,则校验通过,可以提交数据。 · 如果提交数据时,报名人数超过了当前剩余名额,则校验不通过,无法提交数据。   点击安装 「报名人数控制」模板 ,体验使用效果。       编辑于 2021-8-2 15:42 编辑于 2021-8-2 15:43
随机 取数
业务场景:想要随机取数,但是目前提供的随机取数的函数是RAND函数,并且还会出现重复取数的情况。 原理:利用单行文本相同条件下联动出多条数据会随机取出一条数据,并且通过智能助手把基础表中对应的数进行删除达到去重的效果 安装链接:https://jiandaoyun.com/a/60729f4ceee78200077b8b2e 表单外链:https://tqs0cu58u2.jiandaoyun.com/f/6072a5bf6be3990009e34260 知识库外链:https://t6ixa9nyl6.jiandaoyun.com/sharedoc/3JRwT1M9IRb2UvjWdyibM0   基础表中乱序录入10条数据,     联动字段设置默认值和基础表一致,然后随机数字设置数据联动 最后设置智能助手删除基础表对应的数字。 编辑于 2021-7-30 17:06 编辑于 2021-7-30 17:06
会员卡余额计算案例
点击安装 「会员充值消费」模板 ,体验使用效果。   利用简道云可以搭建一个简单的会员管理系统,记录会员的充值与消费情况。充值消费相当于搭建一个进销存系统,充值(进)–消费(销)–余额(存),充值与消费明细可随时查询;在消费时也可以看到实时的余额情况。   整体设计思路如下:(1)会员信息表 > (2)充值记录表 > (3)消费记录表 > (4)计算余额并添加校验 > (5)在消费记录表单中显示实时余额 > (6)测试实际效果 >(7)数据统计与分析     1. 会员信息表单 新建一张表单,记录会员的基础信息,以便在之后的充值与消费表单中,直接调用会员信息,避免每次手工输入。     2. 充值表单   会员卡号 使用下拉框字段,设置关联其他表单数据,调用「会员信息」表单中的会员卡号数据,作为下拉框的选项。   姓名,设置数据联动,通过卡号联动出姓名。     3. 消费表单   会员卡号同样为下拉框字段,设置关联其他表单数据:   姓名,设置数据联动:   消费总金额,设置公式,自动计算。     4. 计算余额 新建聚合表,计算余额。 并添加校验条件,当余额小于0时不允许提交数据。与下文 「第5步骤」 结合: 当消费表单中录入的数据,使得实时计算的余额小于0时,就无法提交数据,避免出现超额消费的情况。     5. 在消费表单中展示实时余额 回到「消费记录」表单中,对当前余额设置数据联动,根据会员卡号调用聚合表中求出的对应的余额。   对本次消费之后余额设置公式,等于当前余额减去消费总金额。     6. 提交消费数据时的效果 如果消费金额小于当前余额,则数据可以提交;如果消费金额超过了当前余额,即实时计算出来的余额小于0,则会触发校验,不允许提交数据:         7. 制作仪表盘分析数据 可以新建仪表盘,统计充值明细与汇总、消费明细与汇总、发展趋势等等。   可以通过筛选组件筛选需要查看的数据;图表之间也可以设置联动,比如会员统计与消费统计,在会员统计中点击会员卡号,就可以看到该账户的消费类型以及消费金额统计。     点击安装 「会员充值消费」模板 ,体验使用效果。 编辑于 2021-7-30 10:15
进销存案例
点击安装 「进销存」模板 ,体验使用效果。   很多企业都会有进销存的场景,入库数据和出库数据之差,得到库存。基本思路为,一张入库表记录进的数据,一张出库表记录销的数据,一张聚合表求库存;再加上数据联动、公式、校验等功能,提高数据录入的效率。   设计思路为:(1)商品信息表 > (2)入库表 > (3)出库表 > (4)计算库存并添加校验 > (5)在入库单中显示实时库存 > (6)测试实际效果   1. 商品信息表 (1)商品名称为单行文本,规格为下拉框。   (2)录入数据     2.入库表   (1)入库明细使用子表单,商品名称(下拉框),设置关联其他表单数据;规格(下拉框),设置数据联动;数量(数字);单价(价格)。     (2)入库总价(数字),写函数计算入库总价格   (3)录入数据     3.出库表 (1)出库表的字段类型与设置,同入库表   (2)录入数据     4.计算库存 (1)新建聚合表应用设置 >> 聚合表 >> 新建聚合表;   (2)设置多表关联。① 选择要关联的表单;② 建立要关联的字段。   (3)添加表头 添加行表头,为表头设置显示名。   (4)添加指标,计算库存   (5)添加数据提交校验,当库存大于等于0方可提交。   (6)看下效果     5. 出库表中显示实时库存 表单中可以调用聚合表的数据,如在出库单中,通过关联查询来显示出现有库存。此处举例为关联查询。也可根据需要使用关联数据、数据联动进行调用   (1)出库表的明细中添加关联查询字段   (2)设置关联查询,设置关联表;显示字段;数据过滤     6.测试实际效果 (1)如果不允许负库存的话,可以在聚合表里设置数据提交校验,库存必须大于0,见上文4-(5)设置。 (2)则在填写出库表时,可以看到该商品名称-规格所对应的库存,以控制出库数量。出库数量大于当时的库存数量,则会触发聚合表中的校验提示,且不允许提交。   这样,一个简单的进销存应用就做好了。   点击安装 「进销存」模板 ,体验使用效果。 编辑于 2021-7-29 10:40
数据过滤案例
1. 简介 1.1 案例简介 在使用聚合表的一些场景中,要用聚合表计算的数据需要经过流程审批,目前聚合表的过滤条件不支持选择流程节点,本文将介绍如何通过审批意见来筛选数据。   1.2 使用场景 如库存管理中,用流程表进行入库登记,用聚合表做实时库存,聚合表的数据需要入库流转完成后再计入实际库存。   1.3 预期效果 如下图:西瓜和苹果经过审批,故计入库存中,荔枝和樱桃未通过审批,故不计入库存中。     2. 操作步骤 以库存管理的场景为例。 2.1 配置表单 (1)首先需要配置「商品基础信息表」,用来记录商品的规格等信息。   (2)再制作一个「入库表」流程表单,其中包含入库的订单明细和流程审核信息。   (3)审批字段可以在流程设定 >> 流程节点 >> 字段权限 处设置成流程发起者不可见或不可编辑。   (4)创建一个「出库表」,表单中记录出库明细。     2.2 聚合表配置 (1)设置数据来源为多表关联,关联表选择「入库表」和「出库表」,关联字段选择商品名称和规格。   (2)设置过滤条件:「入库表」中的入库审批字段等于同意,表示只有当流程流转完成且审批通过的数据才能进行聚合表计算。   (3)设置行表头为商品名称和规格,指标为剩余库存:入库数量 - 出库数量。   (4)数据提交检验设置为:剩余库存 >= 0。   2.3 剩余库存展示 「出库表」的出库明细中添加剩余库存,剩余库存设置成 关联查询 字段,关联表选择聚合表,显示字段为剩余库存,再设置对应的数据过滤条件即可。     3. 实时库存效果演示 选择要出库的产品和规格后,会自动同步出目前的剩余库存数量,并且能够实时更新。 编辑于 2021-7-29 09:33
文本+数字的拆分
知识库外链:https://t6ixa9nyl6.jiandaoyun.com/sharedoc/17VjvmzrzRAx5H9Ztt47DL   表单外链: https://slc5umd6bu.jiandaoyun.com/f/605336125b761700071ccd29   应用安装链接:https://jiandaoyun.com/a/5ea8076bcfdfea0006062a29("文本数字的拆分"表单)     一、问题背景 在进销存等场景内,用户会在单行文本扫码录入产品信息,扫码结果是文本+数字,文本是产品的名称,数字是产品的型号,需要扫码录入后,自动把文本+数字拆分成2个字段,分别记录文本数字。 已知条件:单行文本的内容为文本+数字,文本长度不固定,数字长度不固定。比如单行文本内容为“平车001”或者“工铲2146”。 需要实现:把文本+数字拆分到2个文本字段内,分别显示文本和数字。比如分别拆分成:字段1内容为”平车“,字段2内容为“001”。     二、解决思路 文本+数字的长度不固定,文本的长度不固定,数字的长度也不固定,两者之间没有固定符号间隔,唯一的已知条件为:数字的开头为0、1、2、3、4、5、6、7、8、9中的一个。那么如下思路我们可以进行文本+数字的拆分: 1、获取第一位数字所在位置 2、第一位数字的所在位置-1==文本部分长度,用LEFTT(单行文本,文本部分长度)获取文本内容 3、单行文本总长度-文本部分长度==数字部分长度,用RIGHT(单行文本,数字部分长度)获取数字内容     三、思路解析 1、获取数字部分长度:由于数字的开头肯定是0、1、2、3、4、5、6、7、8、9中的一个,因此只需要分别SEARCH这10个数字在文本内的位置,取最小的位数就可以确定第一位数字的位数,但是需要注意,取最小位数的时候有2种情况: (1)数字内包含0、1、2、3、4、5、6、7、8、9内的所有数字,此时只需要对10位数字一一SEARCH,取SEARCH()的最小值就可以,即:MIN(SEARCH('0',输入内容),SEARCH('1',输入内容),SEARCH('2',输入内容),SEARCH('3',输入内容),SEARCH('4',输入内容),SEARCH('5',输入内容),SEARCH('6',输入内容),SEARCH('7',输入内容),SEARCH('8',输入内容),SEARCH('9',输入内容)) (2)数字内包含0、1、2、3、4、5、6、7、8、9内的部分数字,即部分SEARCH的结果等于0,且有可能多个值等于0,此时我们应该取位数的第二小,即:SMALL(UNION(),2) 那么怎么判断数字包含0、1、2、3、4、5、6、7、8、9内的所有数字还是部分数字呢?包含部分数字字的时候,SEARCH结果肯定会有等于0的,反之,SEARCH结果没有等于0的,则表示数字部分包含0、1、2、3、4、5、6、7、8、9内的所有数字。因此,可以通过如下公式判断包含的是所有数字:COUNTIF(,'0')==0   2、获取文本部分内容        第一位数字的所在位置-1==文本部分长度,用LEFTT(单行文本,文本部分长度)获取文本内容,综合第一步可得到完整公式为:IF(COUNTIF(,'0')==0,LEFT(输入内容,MIN(SEARCH('0',输入内容),SEARCH('1',输入内容),SEARCH('2',输入内容),SEARCH('3',输入内容),SEARCH('4',输入内容),SEARCH('5',输入内容),SEARCH('6',输入内容),SEARCH('7',输入内容),SEARCH('8',输入内容),SEARCH('9',输入内容))-1),LEFT(输入内容,SMALL(UNION(),2)-1))   3、获取数字部分内容       单行文本总长度-文本部分长度==数字部分长度,用RIGHT(单行文本,数字部分长度)获取数字内容,综合第二步可得到完整公式为:RIGHT(输入内容,LEN(输入内容)-LEN(取文本))   Tips: 1、由于这个思路是基于获取第一位数字所在位置从而截取文本部分和数字部分,因此文本部分需要是纯文本,不能包含数字,如:输入内容为XS-S110机车001,就无法用该公式分割成:XS-S110机车和001.  2、于基础公式如果有疑问,可以参考帮助文档基础公式介绍:https://hc.jiandaoyun.com/doc/9031 编辑于 2021-7-28 09:35
多选题 得分判断
知识库外链:https://t6ixa9nyl6.jiandaoyun.com/sharedoc/7dca4jXgHiAiW3fi6wgqXb   表单外链: https://slc5umd6bu.jiandaoyun.com/f/6053344ed27f720007903634   应用安装链接:https://jiandaoyun.com/a/5ea8076bcfdfea0006062a29("多选题得分判断"表单)     一、问题背景   复选框存储逻辑改版之后,选择多个选项之后,数据库内排序是随机的。即:复选框选择了A、B、C之后,存储起来的排序有可能是ABC,也有可能是ACB或者CAB等。用户题库判断多选题得分时,就会比较麻烦。已有的解决方案是:   1、根据正确答案一个个拆分之后再去SEARCH。弊端在于:正确答案个数不同,需要判断的情况就很多,公式较长。 2、根据正确答案和选择的答案吧复选拆分到子表单内判断。弊端在于:一个多选题的判断就要设置一个子表单拆分,比较麻烦   已知条件:多选题的正确答案、已经选择答案的复选框 需要实现:简便的、通用的公式实现多选题的得分判断     二、解决思路   答案正确有2个前提:   1、选择的答案个数和正确答案个数相同 2、选择的答案选项是正确答案的子集     三、设计步骤   1、表单内添加一个复选框用来选择答案,一个单行文本记录该多选题的正确答案,一个数字字段计算得分(这里用正确的10分,否则得0分举例)   Tips:正确答案间需要有英文逗号间隔,不要求答案顺序     2、”得分“字段公式解读   答案正确首先应该满足条件1:选择得答案个数和正确答案的个数相等,因此可以用2个答案COUNT的结果来比较,即需要满足公式:COUNT(请选择答案)==COUNT(SPLIT(正确答案,',') 在满足条件1的情况下,还有一个问题会导致答案不正确,即:选择的选项在正确的答案内不存在,那么怎么来判断是否存在这种情况呢?假如正确答案是ABC,选择的答案是ABE,此时E在正确答案内是不存在的,正确答案和选择答案组合在一起去重之后,组合为ABCE,去重后的选项个数为4个;假如正确答案是ABC,选择的答案是ABC,此时回答是正确的,正确答案和选择答案组合在一起去重之后,组合为ABC,去重后的选项个数是3个,等于正确答案个数。 因此想要答案正确还应该满足条件2:选择的答案和正确答案组合去重之后,应该等于正确答案,即选择答案是正确答案的子集,即需要满足公式:TEXT(UNION(SPLIT(正确答案+','+请选择答案,',')))==TEXT(SPLIT(正确答案,','))。但是这个公式需要注意的是:正确答案和选择的答案在组合的时候,正确答案需要放在前面,因为UNION的去重原理是从前向后开始去判断重复,剔除重复值的。为了写公式时减少注意事项,最后用公式:COUNT(UNION(SPLIT(正确答案+','+请选择答案,',')))==COUNT(SPLIT(正确答案,','))来替换,这个公式对字段位置没有特殊的要求。   Tips:关于基础公式如果有疑问,可以参考帮助文档基础公式介绍:https://hc.jiandaoyun.com/doc/9031 编辑于 2021-7-22 17:02
多个成员单选+成员多选转成子表单
一、应用安装链接:https://jiandaoyun.com/a/606fb70ed3cfb000074e579c 二、知识库连接:https://t6ixa9nyl6.jiandaoyun.com/sharedoc/43UG9c3Lq1UPYPcX2COT1U 三、案例背景:用户有一张项目登记表,每个项目都有很多的角色,一个成员可能在多个角色内,一个角色也可能含有多个成员,并且需要通过权限组让他们查看自己参与的项目信息,所以在表单内添加了较多的成员单选和成员多选字段用于选择成员。 用户还有另外一张登记工作量表,需要选择项目后将所有成员一次性调取过来用于计算计算工时、绩效等,这样就需要将成员都写入子表单内显示了。 假设表单内是3个成员单选和2个成员多选字段,如下图所示:   四、解决思路:  1、首先计算出成员单选和成员多选的总人数,由于成员单选个数固定,所以成员单选人数固定为3;   2、根据总人数联动出子表单的对应行数;   3、根据序号调取出对应的文本姓名;   4.根据文本姓名联动出成员单选对应的姓名。   编辑于 2021-7-19 13:47 编辑于 2021-7-19 13:47
子表单实现排序
1.场景:在子表单中录入学生成绩,然后自动排名;或在子表单中录入一个投标项目不同公司的报价,对报价排名 2.思路:通过LARGE()函数获取对应等级的数值,再参照案例子表单自动获取另一子表单对应的值获取该数值对应的文本内容 3.表单外链:https://syos39w472.jiandaoyun.com/f/6034c5c7d4982900088ac6fc 4.知识库分享链接:https://t6ixa9nyl6.jiandaoyun.com/sharedoc/6AYag7ZidXvaGUSPrzd6z3 5.局限:如有重复的数值,只能按照原始子表单中录入的先后顺序,显示同一数值下最先录入的文本内容6.设计说明:需要两个子表单,子表单1用于录入原始数据,子表单2用于对原始数据进行排名。 147397 7.步骤: 在两个子表单中,都需要添加一个金额的辅助字段,将金额补位,方便后续取数,公式为:RIGHT("###########"+子表单.项目金额,11) 主表中添加3个文本和1个数字字段作为辅助字段 单行文本1命名为金额辅助集合,用于将原始子表单中的金额辅助字段集合起来,编辑公式:CONCATENATE(子表单.金额辅助字段) 单行文本2命名为项目名称集合,用于将原始子表单中的项目名称集合起来,编辑公式:子表单.项目名称 单行文本3命名为金额集合,用于将原始子表单中的金额字段集合起来,编辑公式:子表单,项目金额 数字字段命名为行数,用户获取原始子表单中录入的行数,编辑公式:COUNT(子表单.项目名称) 排名子表单中的排名字段,是数字字段,用于显示对应的排名,设置子表单整体联动,参照案例→→子表单行数自动变化 排名子表单中的序号(项目)字段,是数字字段,用户获取该金额对应在原始子表单中的行数,编辑公式:IF(ISEMPTY(排名表.金额),"",(SEARCH(排名表.金额辅助字段,金额辅助集合)-1)/11+1) 排名子表单中的项目名称,是文本字段,编辑公式:SPLIT(项目名称集合,',') 排名子表单中的金额字段是数字字段,用于获取对应顺序下的最值金额,编辑公式:LARGE(SPLIT(金额集合,','),排名表.排名) 排名子表单中的金额辅将金额补位,方便后续取数,公式为:RIGHT("###########"+子表单.项目金额,11) 编辑于 2021-7-14 11:22 编辑于 2021-7-14 11:23
如何利用子表单进行排班(循环编号)?
一、案例说明 1.问题背景排班,子表单需提交每周的排班人员,每位人员值班2天,共4个人员轮循 2.解决思路 给值班人员编号,分别对应编号1,2,3,4 在子表单实现11223344的编号循环,以编号进行数据联动,带出对应的值班人员,实现效果如下图 147003 147004 3.外链表单外链:https://stxtuc7g04.jiandaoyun.com/f/6062ab556b7b68000785941f文档外链:https://t6ixa9nyl6.jiandaoyun.com/sharedoc/4AQTiIQfuXPO3mbFMTpnUU 4.应用安装链接https://jiandaoyun.com/a/5cb872216f94ba43ccfa3d02 (子表单循环编号分组内) 二、设计说明 1.值班人员编号147005 2.子表单循环编号排班 序号:利用公式生成连续子表单编号 ,(SEARCH(子表单.随机码,辅助2)-1)/36+1+上条数据子表单最后一行序号值随机码:辅助编号,UUID()判断1:看子表单的序号与重复频率 2 的关系(场景要求每位人员值班2天,重复频率即为2) IF(MOD(子表单.序号,2)==0,INT(子表单.序号/2),INT(子表单.序号/2)+1)判断2:再看对重复频率2判断之后,该编号与人数4的关系(循环格式是11223344,每四个人以轮循,则对4求余) IFS(MOD(子表单.判断1,4)==0,4,MOD(子表单.判断1,4)==1,1,MOD(子表单.判断1,4)==2,2,MOD(子表单.判断1,4)==3,3)值班人:设置数据联动 147006 辅助1:设置默认值,辅助子表单连续编号辅助2:辅助子表单连续编号,获取随机码集合,CONCATENATE(子表单.随机码)当前子表单最后一行序号值:子表单.序号上条数据子表单最后一行序号值:MAPX("last",辅助1,辅助1,当前子表单最后一行序号值) 编辑于 2021-7-9 14:01
个人成就
内容被浏览47,977
加入社区4年53天
返回顶部