分享一个批量汇总合并文件的程序

2022-12-01 10:14:15 浏览数 (1)

一、场景需求

假设手上有4个格式类似的文档,每个文档里均包含销售、成本、人工这3张工作表。我们需要分别对这三张表进行合并,结果如下。

二、可能遇到的问题

如果每个表的格式规范,这种场景需求比较容易解决。比如用Excel 、Power BI里的Power Query,或VBA, 或WPS的付费功能,或第三方插件如方方格子等。但实操中,手工Excel表往往有各种各样的特殊情况。这里罗列了其中几种:

  1. 工作表名不一致,比如A文档里叫【销售】,B文档里叫【销 售】或【Sales】;
  2. 每个文档要分别汇总多个工作表
  3. 字段名称不一致,比如A文档里叫【销量】,B文档里叫【件数】;
  4. 字段位置不一致,比如A文档的【单价】在C列,而B文档里在D列;
  5. 起始行位置不一致,这种在销售订单里非常常见,由于表头信息的存在,导致A文档的字段名从第6行开始,而B文档从第9行开始;
  1. 还有极少数情况下,需要汇总的文档包含了excel,csv,txt这几种不同的格式。

三、解决方案

以上这些问题,通过熟练的VBA、PQ技术,或者多种工具搭配,都能解决。无论使用何种方式,在处理工作表名、字段名的不一致问题时,都需要建立一张辅助的对照关系表,将各种不同情况,映射到统一情况中,如下图所示:

我专门针对这几种情况,开发了一款小软件。通过建立相应的对照关系规则表,只需三步,即可实现批量汇总不规范格式的文档。

  1. 选择规则表
  2. 选择要合并汇总的文件
  3. 选择合并方式

软件提供了3种合并方式:按列的位置、按列名称和按自定义规则(即规则表)。

四、规则表说明

规则表文档有三个工作表:

  1. 【提取sheet】 该表记录合并文档的工作表的名称对照关系。如下图所示,原始文档中,名为【销售】、【销 售】或【Sales】的工作表,都将汇总到最终文档的【销售】工作表里。如果一个原始文档里,同时具有【销售】和【Sales】,则依据规则表里上下关系,优先取上方的名称(即取【销售】)。

2.【提取字段】

同上,该工作表用于记录字段名称的对照关系。如下表所示,【销售】表中,【销量】和【件数】,都会汇总在同一列:【销量】。下表的A列,用于标记字段所在的统一表名。

3.【开始行】

该表用于处理起始行的问题。假如需要汇总的表都从第一行开始,则【首行位置】填1。如果不是第一行,则填起始行所共有的一个字符。比如说,每个表,起始行,都有一个文本叫【产品型号】,则填产品型号。那么,程序就会扫描识别到,每个文档,首个包含【产品型号】的单元格所在的行,并以那行开始往下读取。支持部分包含,即可以只填【型号】,那么将会找到第一个包含【型号】的单元格所在的行。

五、软件获取方式

关注本公众号,发消息【批量汇总】,即可获取下载链接。程序约80M,免安装,解压即用。解压后,打开【dist】文件夹,双击深蓝色图标即可。结果输出到同文件夹下【结果】文件夹中。

vba

0 人点赞