请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Timothy.Xu 讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2022-1-14 11:25  /   查看:2934  /  回复:0
从Excel导入数据一直是一个很重要的功能,我相信大家都不是非常的陌生。但是,如果我们需要导入的数据有主子表结构,该如何实现呢?目前我们比较常用的方式,就是分别导入,比如在两个按钮中分别设置导入主表和子表的命令:

image.png904045410.png
只要我们在Excel和数据表中都已经设置好了主子表的关系,那么导入后的数据就是完整具有主子表结构的数据。

image.png79307250.png

可以不可以优化一下这个过程?从点击两下鼠标,优化到点击一下鼠标?
我们总结了一种机智的方法:
我们从Excel的一个Sheet中,一次将主子表数据全部导入到一张辅助表格里,再从这个辅助表格把主表和子表的数据分离,不就可以实现一键导入了吗~
具体的做法如下:

1、首先,我们把Excel的数据整合到一个Excel的Sheet页里,左侧蓝色表格是主表数据,右侧绿色表格是子表数据:

image.png889211120.png

箭头指向的就是关联字段了,由于导入命令中的列名不能重复,所以我们对主子表的关联字段做一些区分。

2、然后按照这个格式,也准备好一个空的辅助表:

image.png468896178.png

3、接下来,我们导入的逻辑,是先将整个Excel数据都导入到辅助表格里。由于辅助表不需要存储数据,所以我们给辅助表格设置为松绑定:

image.png219764708.png

4、导入的数据肯定不是简单地全部添加到主子表里的,因为有可能有重复数据,比如主表数据相同,子表数据不同,或者是希望在原有数据中追加一些新的数据。所以这里应该是一个追加数据的逻辑。我们需要一些策略来判断,哪些数据不存在于当前的数据表,再进行添加。
这里我们需要用VLOOKUP公式来判断,当前主子表中是否已有重复数据:

image.png884981384.png

5、导入后,辅助表格的行数会发生变化,所以我们用COUNTA获取到行数,并在公式单元格中触发后续的命令。我们可以根据上述逻辑,循环表格,然后分别导入:

image.png583945006.png

这里的条件判断还有另一个作用:因为无法保证每次导入的数据是主表数据行数多还是子表数据行数多,用这种判断可以保证遍历到每一行数据,并且判断现在的数据是子表数据还是主表数据。

6、如果有必要,可以直接提交两个表格:

image.png770536803.png

7、配置好之后,导入效果如下:

image.png893984680.png

附上工程文件和导入的Excel文件(Excel文件也可以从工程文件中直接下载):
一键从Excel导入主子表数据(7.0.104.0).fgcc (100.98 KB, 下载次数: 144)

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部