跨多工作表Excel公式拖拽适配:按人员批量求和
解决方案:动态跨表求和人员数据
问题回顾
工作簿按月份分工作表,每个工作表内人员数据按「姓名+4行周数据」重复排列,需要制作汇总表,每行自动求和对应人员在所有工作表的全部周数据,拖拽公式时要跳过固定行数切换到下一位人员,而非逐行偏移。
方法1:固定行间隔偏移(适合人员数据行数固定的场景)
如果每个人员的周数据固定为4行(1行姓名+3行后续周数据),可以用OFFSET或INDEX动态计算求和范围:
用OFFSET实现
假设汇总表的求和公式从第2行开始(A2为Person A),B2单元格公式:
=SUM(OFFSET(Sheet1:Sheet12!$C$1,(ROW()-2)*4,0,4,1))
(ROW()-2)*4:计算偏移行数,第2行时偏移0行(取C1:C4),第3行时偏移4行(取C5:C8),以此类推4,1:指定取4行1列的范围- 拖拽公式时,
ROW()会自动更新,实现每次跳4行求和下一位人员的数据
用INDEX实现(更稳定,避免OFFSET的易失性)
同样从B2开始:
=SUM(Sheet1:Sheet12!C:INDEX(Sheet1:Sheet12!C:C,1+(ROW()-2)*4):INDEX(Sheet1:Sheet12!C:C,4+(ROW()-2)*4))
- 两个
INDEX分别定位求和范围的起始行和结束行,逻辑和OFFSET一致,但非易失性,不会因工作表变动自动重算
方法2:按姓名匹配求和(更灵活,适合行间隔不固定的场景)
如果人员的周数据行数可能变化(比如某月份有5周),用姓名匹配的方式更可靠,不需要依赖固定行间隔:
假设汇总表A列是人员姓名(A2=Person A,A3=Person B),B2单元格公式:
=SUMPRODUCT(SUMIF(INDIRECT("'"&Sheet1:Sheet12&"'!A:A"),A2,INDIRECT("'"&Sheet1:Sheet12&"'!C:C")))
SUMIF(INDIRECT(...),A2,...):在单个工作表中匹配A2的姓名,求和对应C列数值SUMPRODUCT:将所有工作表的求和结果汇总- 拖拽公式时,A列姓名自动切换,公式会自动匹配对应人员的所有数据,不管其占多少行
内容的提问来源于stack exchange,提问作者dataguy
相关产品推荐
相关产品推荐

