单个子表单汇总
1. 简介
1.1 案例简介
本文将介绍,在一个子表单中录入多条可能重复的数据时,如何将类型/名称一致的数据进行数量求和,汇总至另一个子表单中。
1.2 应用场景
- 部门采购场景中,由负责人统一汇总部门所有人的采购需求,将同一采购需求的数量汇总至子表单中;
 - BOM 场景中,拆分物料清单时,将相同原料及其使用数量汇总到一起,便于统计用料情况等。
 
1.3 设计思路
1)在子表单中分别汇总出各行的「类型+产品」和「类型+产品+数量」;
2)在主表中对「类型+产品」进行去重,只保留不重复的「类型+产品」;
3)在主表中计算出去重后的「类型+产品」的数量,作为汇总子表单的行数;
4)在主表中汇总全部「类型+产品+数量」的集合,连接成一个字符串,便于后续计算数量;
5)通过字符分割去重后的「类型+产品」,根据子表单序号取出对应行数的「类型+产品」,再通过”+“分割出类型和产品,取其中的第一个即为采购类型,第二个即为采购产品;
6)通过该行子表单的类型、产品和“+”字符将「类型+产品+数量汇总」进行分割,再通过“-”字符将对应产品的数量提取出来,最后通过 SUM 函数相加即为对应的采购数量。
1.4 预期效果
以汇总采购需求的场景为例,效果如下:点击体验效果
注:由于安装模板时限制单个表单数据最多为 100 条,故安装模板时,需要重新按照【2.2 「子表单基础表」录入数据】的步骤录入数据,否则将无法实现预期效果。
2. 设置步骤
在学习之前建议安装 单个子表单分组汇总 应用模板,本文将按照模板中的示例数据进行讲解。
以汇总采购需求的场景为例:
2.1 表单搭建
1)新建「采购需求表」表单,字段设置如下:
字段名称  | 字段类型  | 
采购需求录入  | 子表单  | 
采购类型  | 子字段-下拉框  | 
采购产品  | 子字段-下拉框  | 
数量  | 子字段-数字  | 
类型+产品  | 子字段-单行文本  | 
类型+产品+数量  | 子字段-单行文本  | 
类型+产品去重  | 单行文本  | 
行数  | 数字  | 
类型+产品+数量汇总  | 单行文本  | 
采购需求汇总  | 子表单  | 
序号  | 子字段-数字  | 
采购类型  | 子字段-单行文本  | 
采购产品  | 子字段-单行文本  | 
数量  | 子字段-数字  | 
2)新建「子表单基础表」辅助表单,字段设置如下:
字段名称  | 字段类型  | 
总行数  | 数字  | 
子表单  | 子表单  | 
序号  | 子字段-数字  | 
数字  | 子字段-数字  | 
2.2 「子表单基础表」录入数据
1)在「子表单基础表 >> 数据管理 >> 导入」处导入附件中的示例数据:200行子表单基础表序号全集.xlsx。
2)导入数据时需确认示例数据和表单字段的关联关系如下:
2.3 设置数据联动
1)进入「采购需求表」表单,选中「采购需求汇总」整个子表单,在「字段属性 >> 默认值」处,设置选项为「数据联动」,点击「数据联动设置」:
2)进入数据联动设置页面,设置内容如下:
- 联动表单:「子表单基础表」;
 - 条件设置为:「总行数」等于「行数」;
 - 触发联动:
 - 「采购需求汇总」字段显示「子表单」字段的值;
 - 添加「序号」子字段,显示为「序号」子字段的值;
 
全部设置完成点击「确定」。
2.4 设置公式
1)选中「采购需求录入.类型+产品」字段,在「字段属性 >> 默认值」处,设置默认值为「公式编辑」,点击下方「编辑公式」:
2)在公式编辑页面,设置「采购需求录入.类型+产品」的公式为:CONCATENATE(采购需求录入.采购类型,"+",采购需求录入.采购产品),表示将每行子表单的采购类型、采购产品和字符串通过 CONCATENATE 函数连接起来。
设置好记得点击「确定」保存。
3)按照同样的方法,设置其他字段的公式如下:
字段名称  | 公式  | 公式含义  | 
采购需求录入.类型+产品+数量  | CONCATENATE(采购需求录入.采购类型,"+",采购需求录入.采购产品,"+",采购需求录入.数量,"-")  | 将每行子表单的采购类型、采购产品、数量和”+“、”-“字符串通过 CONCATENATE 函数连接起来  | 
类型+产品去重  | UNION(采购需求录入.类型+产品)  | 对子表单中的类型+产品进行去重,只保留不重复的类型+产品  | 
行数  | COUNT(UNION(采购需求录入.类型+产品))  | 计算去重后的类型+产品的数量,用于作为子表单行数  | 
类型+产品+数量汇总  | CONCATENATE(采购需求录入.类型+产品+数量)  | 将子表单中的所有采购类型、产品、数量通过 CONCATENATE 函数连接起来  | 
采购需求汇总.采购类型  | SPLIT(TEXT(SPLIT(类型+产品去重,",")[采购需求汇总.序号-1]),"+")[0]  | 先通过逗号分割去重后的类型+产品,根据子表单序号取出对应行数的类型+产品,再通过”+“分割出类型和产品,取其中的第一个即为采购类型  | 
采购需求汇总.采购产品  | SPLIT(TEXT(SPLIT(类型+产品去重,",")[采购需求汇总.序号-1]),"+")[1]  | 同上,取其中第二个即为采购产品  | 
采购需求汇总.数量  | SUM(SPLIT(CONCATENATE(SPLIT(类型+产品+数量汇总,CONCATENATE(采购需求汇总.采购类型,"+",采购需求汇总.采购产品,"+"))), "-"))  | 通过该行子表单的类型、产品和“+”字符将「类型+产品+数量汇总」进行分割,再通过“-”字符将对应产品的数量提取出来,最后通过 SUM 函数相加即为对应的采购数量  | 
2.5 设置字段显隐规则
1)对于表单中的如下辅助字段,可以在「字段属性 >> 字段权限」处设置字段为不可见:
- 采购需求录入:类型+产品、类型+产品+数量
 - 类型+产品去重
 - 行数
 - 类型+产品+数量汇总
 
2)在「表单属性 >> 不可见字段赋值」处,设置赋值规则为「始终重新计算」:
2.6 效果演示
效果演示参见本文【1.4 预期效果】。

400-111-0890
在线咨询