子表单内容合并

1. 简介

1.1 案例简介

本文将介绍,如何将子表单内的多行数据,按照其中某个字段值进行分类,分类汇总至另一个子表单中,实现子表单的内容合并。

1.2 应用场景

  • 采购场景中,使用子表单收集各类物品的采购需求,可通过内容合并将不同类型的需求汇总,便于统一查看;
  • 需求反馈场景中,使用子表单收集各类需求反馈,可通过内容合并将不同类型反馈内容汇总,便于统一处理;
  • 订单管理场景中,使用子表单记录各类产品明细,可通过内容合并将不同类型产品汇总,便于统一出入库等。

1.3 设计思路

1)首先对子表单内容进行去重汇总,去重汇总部分参见:单个子表单汇总

2)去重汇总后,在子表单内按照一定的格式汇总出各行的采购类型、物品名称、采购数量;

3)在主表中计算「采购类型」的去重数量和去重类型,分别作为汇总子表单的行数和该行对应的采购类型;

5)为方便汇总子表单调用,分别在主表中添加「类型」和「单行内容汇总」的合集;

6)通过逗号分割去重后的「采购类型」,根据子表单序号填写至对应行中;

7)在汇总子表单中计算出每种采购类型内的采购产品的数量;

8)通过 IF 函数对「全部汇总」字段内容进行判断:当采购需求中包含该行的「采购类型」的数量达到1、2、3......时,分别通过 SPLIT 函数借助字符串和采购类型分割汇总的内容,取出对应的需求内容,最后通过 CONCATENATE 函数连接起来即可。

1.4 预期效果

在采购需求表中录入各类型的物品需求,采购需求汇总处即可自动将同类型的采购需求汇总,效果如下:点击体验效果

注:由于安装模板时限制单个表单数据最多为 100 条,故安装模板时,需要重新按照【2.2 「子表单基础表」录入数据】的步骤录入数据,否则将无法实现预期效果。

2. 设置步骤

在学习之前建议安装 子表单内容合并 应用模板,本文将按照模板中的示例数据进行讲解。

以合并采购需求的场景为例:

2.1 表单搭建

1)新建「采购需求表」表单,字段设置如下:

注:本案例中为了避免录入相同采购类型和采购产品的数据,增加了去重汇总的步骤。如果在实际业务中不需要录入重复数据,则不需要添加下表中蓝色部分的字段。

字段名称

字段类型

采购需求录入

子表单

采购类型

子字段-下拉框

采购产品

子字段-下拉框

数量

子字段-数字

类型+产品

子字段-单行文本

类型+产品+数量

子字段-单行文本

类型+产品去重

单行文本

行数

数字

类型+产品+数量汇总

单行文本

去重汇总

子表单

序号

子字段-数字

采购类型

子字段-单行文本

采购产品

子字段-单行文本

数量

子字段-数字

单行汇总

子字段-单行文本

类型去重

单行文本

行数

数字

类型合集

单行文本

全部汇总

单行文本

采购需求汇总

子表单

序号

子字段-数字

采购类型

子字段-单行文本

数字辅助

子字段-数字

需求明细

子字段-单行文本

2)新建「子表单基础表」辅助表单,字段设置如下:

字段名称

字段类型

总行数

数字

子表单

子表单

序号

子字段-数字

数字

子字段-数字

2.2 「子表单基础表」录入数据

1)在「子表单基础表 >> 数据管理 >> 导入」处导入附件中的示例数据:200行子表单基础表序号全集.xlsx

2)导入数据时需确认示例数据和表单字段的关联关系如下:

2.3 设置数据联动

1)进入「采购需求表」表单,选中「去重汇总」整个子表单,在「字段属性 >> 默认值」处,设置选项为「数据联动」,点击「数据联动设置」:

2)进入数据联动设置页面,设置内容如下:

  • 联动表单:「子表单基础表」;
  • 条件设置为:「总行数」等于「去重行数」;
  • 触发联动:
    • 「去重汇总」字段显示「子表单」字段的值;
    • 添加「序号」子字段,显示为「序号」子字段的值;

全部设置完成点击「确认」。

3)同样的方法,设置子表单「采购需求汇总」的数据联动如下:

  • 联动表单:「子表单基础表」;
  • 条件设置为:「总行数」等于「行数」;
  • 触发联动:
    • 「采购需求汇总」字段显示「子表单」字段的值;
    • 添加「序号」子字段,显示为「序号」子字段的值;

全部设置完成点击「确认」。

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 函数相加即为对应的采购数量

去重汇总.单行汇总

CONCATENATE('【',去重汇总.采购类型,'-',去重汇总.采购产品,'-',去重汇总.数量,'-',去重汇总.采购类型,'】')

将每行子表单的采购类型、物品名称、采购数量和字符串通过 CONCATENATE 函数连接起来,形成【采购类型-采购产品-数量-采购类型】的格式

类型去重

UNION(去重汇总.采购类型)

对子表单中的采购类型进行去重,只保留不重复的采购类型

行数

COUNT(UNION(去重汇总.采购类型))

计算去重后的采购类型的数量,用于作为最终汇总子表单的行数

类型合集

去重汇总.采购类型

汇总「去重汇总」中的全部采购类型字段(不去重)

全部汇总

去重汇总.单行汇总

汇总「去重汇总」中的全部「单行汇总」内容

采购需求汇总.采购类型

SPLIT(类型去重,',')[采购需求汇总.序号-1]

通过逗号分割去重后的采购类型,根据子表单序号填写至对应行中

采购需求汇总.数字辅助

COUNTIF(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 函数对「全部汇总」字段内容进行判断:当采购需求中包含该行的「采购类型」的数量达到1、2、3......时,分别通过 SPLIT 函数借助字符串和采购类型分割汇总的内容,取出对应的需求内容,最后通过 CONCATENATE 函数连接起来。

注:本案例中同一「采购类型」一次性最多填写 5 种不同的「采购产品」,使用时如果有可能超出 5 个,则需要在 CONCATENATE 函数中继续补充如下公式:IF(采购需求汇总.数量>=n,CONCATENATE(',',SPLIT(TEXT((SPLIT(汇总,CONCATENATE('【',采购需求汇总.采购类型,'-'))[1]),CONCATENATE('-',采购需求汇总.采购类型,'】')[n]),CONCATENATE('-',采购需求汇总.采购类型,'】'))[0])

2.5 设置字段显隐规则

1)对于表单中的如下辅助字段,可以在「字段属性 >> 字段权限」处设置字段为不可见:

  • 采购需求录入:类型+产品、类型+产品+数量
  • 类型+产品去重、去重行数、类型+产品+数量汇总
  • 去重汇总
  • 类型去重、行数、类型合集、全部汇总
  • 采购需求汇总:数字辅助

2)在「表单属性 >> 不可见字段赋值」处,设置赋值规则为「始终重新计算」:

2.6 效果演示

效果演示参见本文【1.4 预期效果】。

Copyright(C)2023 HFBangFu Inc. All Rights Reserved 皖ICP备12017563号-5