1. 简介
1.1 案例简介
本文将介绍,如何将子表单内的多行数据,按照其中某个字段值进行分类,分类汇总至另一个子表单中,实现子表单的内容合并。
1.2 应用场景
- 采购场景中,使用子表单收集各类物品的采购需求,可通过内容合并将不同类型的需求汇总,便于统一查看;
- 需求反馈场景中,使用子表单收集各类需求反馈,可通过内容合并将不同类型反馈内容汇总,便于统一处理;
- 订单管理场景中,使用子表单记录各类产品明细,可通过内容合并将不同类型产品汇总,便于统一出入库等。
1.3 预期效果
在采购需求表中录入各类型的物品需求,采购需求汇总处即可自动将同类型的采购需求汇总,效果如下:
2. 设置步骤
在学习之前建议安装 子表单内容合并 应用模板,本文将按照模板中的示例数据进行讲解。
以汇总采购需求的场景为例:
2.1 表单搭建
1)新建「采购需求表」表单,字段设置如下:
字段名称 | 字段类型 |
采购需求 | 子表单 |
采购类型 | 子字段-下拉框 |
物品名称 | 子字段-单行文本 |
采购数量 | 子字段-数字 |
汇总字段 | 子字段-单行文本 |
类型去重 | 单行文本 |
类型合集 | 单行文本 |
汇总 | 单行文本 |
行数 | 数字 |
采购需求汇总 | 子表单 |
序号 | 子字段-数字 |
采购类型 | 子字段-单行文本 |
数量 | 子字段-数字 |
需求明细 | 子字段-单行文本 |
2)新建「子表单基础表」辅助表单,字段设置如下:
字段名称 | 字段类型 |
总行数 | 数字 |
子表单 | 子表单 |
序号 | 子字段-数字 |
数字 | 子字段-数字 |
2.2 「子表单基础表」录入数据
1)在「子表单基础表 >> 数据管理 >> 导入」处导入附件中的示例数据:200行子表单基础表序号全集.xlsx。
2)导入数据时需确认示例数据和表单字段的关联关系如下:
2.3 设置数据联动
1)进入「采购需求表」表单,选中「采购需求汇总」整个子表单,在「字段属性 >> 默认值」处,设置选项为「数据联动」,点击「数据联动设置」:
2)进入数据联动设置页面,设置内容如下:
- 联动表单:「子表单基础表」;
- 条件设置为:「总行数」等于「行数」;
- 触发联动:
- 「采购需求汇总」字段显示「子表单」字段的值;
- 添加「序号」子字段,显示为「序号」子字段的值;
全部设置完成点击「确认」。
2.4 设置公式
1)选中「汇总字段」,在「字段属性 >> 默认值」处,设置默认值为「公式编辑」,点击下方「编辑公式」:
2)在公式编辑页面,设置「汇总字段」的公式如下:CONCATENATE('【',采购需求.采购类型,'-',采购需求.物品名称,'-',采购需求.采购数量,'-',采购需求.采购类型,'】'),表示将每行子表单的采购类型、物品名称、采购数量和字符串通过 CONCATENATE 函数连接起来。
设置好记得点击「确定」保存。
3)按照同样的方法,设置其他字段的公式如下:
- 类型去重:UNION(采购需求.采购类型),表示将采购需求中的采购类型字段值去重;
- 类型合集:采购需求.采购类型,表示采购需求中的全部采购类型字段合集;
- 汇总:UNION(采购需求.汇总字段),表示将采购需求中每行的汇总字段值去重;
- 行数:COUNT(UNION(采购需求.采购类型)),用于计算去重后的采购类型数,作为汇总表的行数;
- 采购需求汇总.采购类型:SPLIT(类型去重,',')[采购需求汇总.序号-1],表示通过逗号分割去重后的采购需求类型,填充至汇总的子表单中;
- 采购需求汇总.数量:COUNTIF(SPLIT(类型合集,','),采购需求汇总.采购类型),用于计算每种采购需求的物品类型数量;
- 采购需求汇总.需求明细:
UNION(SPLIT(CONCATENATE('包含:',IF(采购需求汇总.数量>=1,SPLIT(TEXT(SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[1]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0],''),IF(采购需求汇总.数量>=2,CONCATENATE(',',SPLIT(TEXT(SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[2]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0])),IF(采购需求汇总.数量>=3,CONCATENATE(',',SPLIT(TEXT(SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[3]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0])),IF(采购需求汇总.数量>=4,CONCATENATE(',',SPLIT(TEXT(SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[4]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0])),IF(采购需求汇总.数量>=5,CONCATENATE(',',SPLIT(TEXT(SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[5]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0])),IF(采购需求汇总.数量>=6,CONCATENATE(',',SPLIT(TEXT(SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[6]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0])),IF(采购需求汇总.数量>=7,CONCATENATE(',',SPLIT(TEXT(SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[7]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0])),IF(采购需求汇总.数量>=8,CONCATENATE(',',SPLIT(TEXT(SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[8]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0])),IF(采购需求汇总.数量>=9,CONCATENATE(',',SPLIT(TEXT(SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[9]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0])),IF(采购需求汇总.数量>=10,CONCATENATE(',',SPLIT(TEXT(SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[10]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0]))),','))
根据「采购需求汇总.数量」字段计算出的数量,将采购分为对应的数组,并通过 SPLIT 函数将同类型的采购需求分割填充至需求明细字段中。
注:本案例中的「采购需求汇总.需求明细」字段按照每个采购类型最多填写 10 个物品设置的公式,使用时如果有可能超出 10 个,则需要在 CONCATENATE 函数中补充如下公式:
IF(采购需求汇总.数量>=n,CONCATENATE(',',SPLIT(TEXT((SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[1]),CONCATENATE('-',采购需求汇总.采购类型,'】')[n]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0])
2.5 设置字段显隐规则
1)对于表单中的如下辅助字段,可以在「字段属性 >> 字段权限」处设置字段为不可见:
- 采购需求:汇总字段
- 类型去重、类型合集、汇总、行数
- 采购需求汇总:序号、数量
2)在「表单属性 >> 不可见字段赋值」处,设置赋值规则为「始终重新计算」:
2.6 效果演示
效果演示参见本文【1.3 预期效果】。