【问题描述】下图Excel文件里有2021年1-5月份的工资表,后续还将逐月新增,如何在汇总表里编写一个通用公式获取王五2021年的工资总和呢?
【小千解答】思路:借助宏表函数获取可变的目标工作表清单,使用sumifs函数实现多条件求和,通过indirect函数构建多工作表引用,最外层使用sumproduct函数进行汇总。
Step 01 新建“目录”工作表,A1:C1分别录入:所有工作表清单、排除工作表清单、目标工作表清单。
Step 02 【公式】→【名称管理器】,新建两个名称:
清单
=GET.WORKBOOK(1)
工作表
=INDEX(清单,ROW(目录!A1))&T(NOW())
Step 03 关闭名称管理器,A2输入以下公式后下拉填充至A31。
=IFERROR(MID(工作表,FIND("]",工作表)+1,99),"")
Step 04 单击B2→【数据】→【数据验证】→“允许”选择【序列】,“来源”输入以下公式,下拉填充至B31。
=OFFSET($A$2,,,COUNTA(清单),1)
Step 05 C2输入以下数组公式,按【Ctrl+Shift+Enter】,下拉填充至C31。
=IFERROR(INDEX($A$2:$A$31,SMALL(IF(COUNTIF($B$2:$B$31,$A$2:$A$31)=0,ROW($A$1:$A$30),99),ROW(A1))),"")
Step 06 【公式】→【名称管理器】,新建一个名称
目标工作表
=OFFSET(目录!$C$2,,,30-COUNTBLANK(目录!$C$2:$C$31),1)
Step 07 在“汇总表”工作表的D4输入以下公式,向上填充至D2。(多条件指:事业部、部门、部门负责人均匹配)
=SUMPRODUCT(SUMIFS(INDIRECT("'"&目标工作表&"'!$D$1:$D$5000"),INDIRECT("'"&目标工作表&"'!$A$1:$A$5000"),A4,INDIRECT("'"&目标工作表&"'!$B$1:$B$5000"),B4,INDIRECT("'"&目标工作表&"'!$C$1:$C$5000"),C4))