在日常工作中,我们经常遇到需要将各部门按统一模板填写的表格汇总在一张工作表的情形,这种情况下我们可以自定义一个汇总函数快速实现。

假如我们已经把这些工作表统一放到了一起,如何汇总?
先定义一个汇总函数sheet_combine用来汇总,在名称管理器的引用位置中输入以下公式:
=LAMBDA(shts,LET(
sht_1,INDEX(shts,1),
bth,INDIRECT("'"&sht_1&"'!a1:z1"),
title,FILTER(bth,bth<>""),
cols,COLUMNS(title),
REDUCE(title,shts,LAMBDA(acc,sht,LET(sht_data,INDIRECT("'"&sht&"'!a2:"&ADDRESS(1000,cols)),a_col,INDIRECT("'"&sht&"'!a2:a1000"),sht_data_ac,FILTER(sht_data,a_col<>""),VSTACK(acc,sht_data_ac))))))
再定义一个清洗函数cln,用来统一各上报的分表的格式差异:
=LAMBDA(area,MAP(area,LAMBDA(dyg,SUBSTITUTE(TRIM(TEXT(dyg,"@")),CHAR(160),""))))
这样我们就可以利用这两个函数轻松合并工作表了,在汇总表的第一个单元格输入:
=cln(sheet_combine(DROP(SHEETSNAME(),,1)))
意思是把当前工作簿除了第一个汇总表之外的工作表合并在一起,并统一格式,效果如下图:

说明:
1、笔者在编写合并公式时,曾尝试用take函数提取第一个合并的工作表名称,可是无端报错,遂换为index提取。
2、公式中对各工作表内容的提取为软链接的形式,无论以后在后面增减工作表,或者删除后面工作表的区域,公式均能正常执行。
夜雨聆风