这是一份关于Excel高级数据汇总的实用教程,详细演示如何通过动态公式实现多表数据自动合并并标注来源表名。该方法可适应表格增删变化,数据更新即时同步,极大提升工作效率。
智能速览
使用SHEETNAME函数动态获取所有子表名称
通过REDUCE+LAMBDA组合实现循环处理多表
INDIRECT函数实现跨表数据区域引用
TRIMRANGE去除空行,DROP删除多余标题行
HSTACK添加表名标识列,VSTACK垂直合并结果
公式设计支持新增表格自动纳入汇总范围
精华内容
这套动态汇总公式的核心在于灵活运用Excel的数组函数,通过递归遍历所有子表,将分散的数据统一整合到主表中,同时保留数据来源标识。
获取子表名
使用SHEETNAME(,1)函数获取除当前表外的所有工作表名称。第一个参数省略,第二个参数1表示按行显示,第三个参数1排除当前表。这样得到一个包含所有子表名的数组,作为后续循环处理的基础数据源。
循环提取数据
采用REDUCE函数实现循环处理,初始值设为表头区域A1:C1。在LAMBDA函数中,x为累积结果,y为当前表名。通过INDIRECT函数动态引用各表数据区域,使用’&y&“'”!A1:F20’构建跨表引用,确保能捕获所有可能的数据范围。
数据清洗处理
原始数据包含大量空行和多余标题,需要清洗。先用TRIMRANGE函数去除空行,再用DROP函数跳过首行标题。使用LET函数将处理结果命名为arr,通过IF(arr=“”“”“”“”",arr)将空白单元格转为空值而非0,保持数据准确性。
添加表名标识
使用HSTACK函数将清洗后的数据与表名y水平合并。由于y是单值而数据是多行,会出现维度不匹配错误。通过IFERROR函数捕获错误,错误时返回y本身,确保每行数据都能正确关联对应的表名。
垂直合并结果
最外层使用VSTACK函数将初始表头x与处理后的数据垂直堆叠。由于堆叠会重复表头,最后用DROP(,1)移除首行多余标题。最终公式为:=DROP(REDUCE(A1:C1,SHEETNAME(,1),LAMBDA(x,y,VSTACK(x,IFERROR(HSTACK(LET(arr,DROP(TRIMRANGE(INDIRECT(y&“'”!A1:F20"),1),IF(arr=“”“”“”“”,arr))),y))))),1)
这套动态汇总方案完美解决了多表数据整合的痛点,公式一次设置后终身受用。无论是新增表格还是修改数据,汇总结果都能实时更新,大大提升数据处理效率。你是否还有其他Excel汇总难题需要解决?