Excel按天按班次动态统计任务总耗时(无需硬编码公式)
动态统计每日班次任务总耗时(Excel公式解决方案)
核心公式(以周一早班为例)
假设表1的周一任务在A2:A10,对应班次在B2:B10,表2的任务耗时数据在Table2!A2:B100,用以下公式即可统计总耗时:
=SUMPRODUCT(--($A$2:$A$10<>"")*--($B$2:$B$10="morning"),IFERROR(VLOOKUP($A$2:$A$10,Table2!$A$2:$B$100,2,FALSE),0))
公式拆解
--($A$2:$A$10<>""):筛选出周一列非空的任务行,--将布尔值(TRUE/FALSE)转换为1/0,方便后续计算--($B$2:$B$10="morning"):筛选出对应行班次为早班的记录,同样转换为1/0VLOOKUP($A$2:$A$10,Table2!$A$2:$B$100,2,FALSE):对每个任务自动查找表2中的对应耗时,FALSE确保精确匹配IFERROR(...,0):处理表2中未收录的任务,返回0避免公式报错SUMPRODUCT:将上述三个条件的结果相乘(只有任务存在且班次匹配时,才会乘以对应耗时),最后求和得到总耗时
扩展到其他天和班次
只需要修改公式中的列引用和班次关键词:
- 统计周二晚班:把
A2:A10换成C2:C10,B2:B10换成D2:D10,"morning"换成"evening"
=SUMPRODUCT(--($C$2:$C$10<>"")*--($D$2:$D$10="evening"),IFERROR(VLOOKUP($C$2:$C$10,Table2!$A$2:$B$100,2,FALSE),0))
更动态的优化:使用结构化表格
如果把表2转换成结构化表格(选中表2数据→插入→表格),命名为TaskTimeTable,公式会自动适配新增的任务,无需手动调整数据范围:
=SUMPRODUCT(--($A$2:$A$10<>"")*--($B$2:$B$10="morning"),IFERROR(VLOOKUP($A$2:$A$10,TaskTimeTable[[Task]:[Time]],2,FALSE),0))
方案优势
- 彻底摆脱硬编码:新增任务时,只需在表2中添加任务名称和耗时,公式自动识别
- 无需VBA或Python,纯Excel公式实现
- 兼容大部分Excel版本(SUMPRODUCT、VLOOKUP是基础函数)
内容的提问来源于stack exchange,提问作者Electrochemist
相关产品推荐
相关产品推荐

