如何在Excel排班表中为非数值班次赋值并自动计算总工时
如何在Excel排班表中为非数值班次赋值并自动计算总工时
嘿,我完全懂你现在的烦恼——手动给每个文本班次对应工时再求和,实在太耗精力了!针对你这种用「12-cls」「5-LB」「holiday」这类文本代码表示班次的场景,我给你推荐两个实用的Excel方案,能自动完成班次到工时的转换,还能一键汇总总工时:
方案一:辅助表+VLOOKUP函数(全Excel版本兼容)
这个方法兼容性拉满,不管你用的是哪个版本的Excel都能搞定,而且后续维护起来很方便:
- 第一步:先在表格空白区域(比如右侧新建一个两列的辅助表):
- 第一列(比如E列)输入所有你的班次代码:「5-LB」「holiday」「12-cls」等;
- 第二列(比如F列)对应输入每个班次的工时:「5-LB」填10,「holiday」填8,「12-cls」根据实际情况填对应的工时(比如8)。
- 第二步:计算单班工时。假设你的班次在A2单元格,在旁边的B2单元格输入公式:
解释一下:=IFERROR(VLOOKUP(A2, $E$2:$F$5, 2, FALSE), 0)$E$2:$F$5是你辅助表的范围,加绝对引用符号$是为了下拉公式时范围不会乱跑;IFERROR是用来处理未匹配到的班次,直接返回0工时,避免出现#N/A错误。 - 第三步:汇总总工时。如果要算某个人一周的总工时,直接用求和公式:
嫌单独列工时麻烦的话,还可以用=SUM(B2:B8)SUMPRODUCT直接汇总排班区域的总工时,不用单独计算单班:=SUMPRODUCT(IFERROR(VLOOKUP(A2:A8, $E$2:$F$5, 2, FALSE), 0))
方案二:SWITCH函数(适合Excel 365/2021及以后版本)
如果你的Excel版本比较新,用SWITCH会更简洁,不用额外建辅助表,直接把班次和工时的对应关系写在公式里:
- 计算单班工时,同样假设班次在A2:
这里最后一个=SWITCH(A2, "5-LB", 10, "holiday", 8, "12-cls", 8, 0)0是默认值,要是遇到不在列表里的班次,就自动返回0。你可以根据自己的所有班次,继续往公式里添加对应关系,比如"7-XX", 9这样。 - 汇总总工时的话,搭配
SUMPRODUCT直接搞定:=SUMPRODUCT(SWITCH(A2:A8, "5-LB",10, "holiday",8, "12-cls",8,0))
小提醒
- 如果你的班次代码很多、后续还可能新增或修改,优先选方案一,改辅助表比改公式省事太多;
- 如果班次少且固定,方案二更直接,不用额外占表格空间。
备注:内容来源于stack exchange,提问作者Megan Sheil
相关产品推荐
相关产品推荐

